检查 Laravel 5.5 中是不是存在记录 [关闭]

Posted

技术标签:

【中文标题】检查 Laravel 5.5 中是不是存在记录 [关闭]【英文标题】: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() 提供的参数无效” 【参考方案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的数组

以上是关于检查 Laravel 5.5 中是不是存在记录 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何检查记录是不是已经存在,然后在 laravel 中更新或插入?

Laravel:检查记录ID是不是存在

在 laravel 5.5 中检查查询没有结果

laravel 在插入之前检查记录是不是存在,这是一种有效的方法

方法Paginate在laravel 5.5中不存在

无法在 Laravel 5.5 中使用 axios 获取记录