【问题标题】:check if record exist in Laravel 5.5 [closed]检查 Laravel 5.5 中是否存在记录 [关闭]
【发布时间】:2018-06-01 10:41:35
【问题描述】:

我有一个动态输入表单,我想检查记录是否存在,如果不存在则不能插入数据

我的控制器

$user = Master::where('id_a','=',$request->get('id_a'))->where('id_b','=',$request->get('id_b'))->get();

   if($user->isEmpty()){
      // insert
   }else{
     //message "cannot input"
   }

如果插入一个数据,成功..但如果在我的控制器中插入数组不检查.. 为什么在输入数组数据中总是插入???

【问题讨论】:

  • 能否显示插入代码
  • $input = $request->all(); for ($i=0; $i get('id_b')); ++$i) { $var = new Master; $var->value= $input['value'][$i]; $var->保存(); }
  • 如果插入一个数据,总是检查到数据库,但如果插入数组数据不检查。
  • 是 $request->get('id_b') 包含一个数组。在这种情况下,您必须使用 whereIn 而不是 where
  • @HoàngĐăng 如果使用 whereIn,我收到错误“为 foreach() 提供的参数无效”

标签: php laravel


【解决方案1】:

这是伪的,仅用于检查id_b

   $data = [1,2,3,4];
   $data_a = [1,2,3,4];

    $masters = Master::whereIn('id_b', $data)->whereIn('id_a', $data_a)->get();

    foreach($data as $key => $value) {
        $isExisted = false;

        foreach ($masters as $master) {
            if ($master->id_b == $value[$key] && $master->id_a == $data_a[$key])
            {
                $isExisted = true;
                break;
            }
        }

        if ( ! $isExisted) {
            $master = new Banner();
            $master->value = your_data;
            $master->save();
        }
    }

【讨论】:

  • 谢谢,但没用 :(
  • 检查你的 $request->get('id_a')id_b 是一个数组,如果没有将它们解析为数组
  • 如果你有代码在 github 我可以为你调试
  • 我不使用 github.. 但谢谢.. 我签入 dd() $request->get('id_b') null.. 为什么?
  • 重新检查浏览器。你发了吗
【解决方案2】:

如果我理解正确,如果给定的id_aid_b 不存在一个Master

,您想插入一个Master

如果是这样,您实际上可以使用firstOrCreate

Master::firstOrCreate(
  ['id_a' => $request->get('id_a'), 'id_b' => $request->get('id_b')], 
  ['yourcolumntocreate' => columnvalue, ...]
)

【讨论】:

  • 如果我使用 firstOrCreate 旧数据已被替换..
  • 那你可以firstOrNew,但我认为这不是你的问题...
【解决方案3】:

你可以使用exists()

if(Master::where('id_a','=',$request->get('id_a'))->where('id_b','=',$request->get('id_b'))->exists()) {
do something
}

另外我建议你减少你正在做的内联内容的数量,而不是像这样:

$id_a = $request->get('id_a');
$id_b = $request->get('id_b');

if(Master::where('id_a','=', $id_a)->where('id_b','=',$id_b)->exists()) {
do something
}

【讨论】:

  • $id_a, $id_b 是他的case的数组
猜你喜欢
  • 2015-01-21
  • 2021-08-08
  • 2020-01-14
  • 2018-11-25
  • 1970-01-01
  • 1970-01-01
  • 2016-02-24
相关资源
最近更新 更多