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

问题描述 投票:0回答:3

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

我的控制器

$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"
   }

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

php laravel
3个回答
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();
        }
    }

0
投票

你可以使用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
}

0
投票

如果我理解正确,如果给定的Masterid_a不存在,那么你想插入一个id_b

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

Master::firstOrCreate(
  ['id_a' => $request->get('id_a'), 'id_b' => $request->get('id_b')], 
  ['yourcolumntocreate' => columnvalue, ...]
)
© www.soinside.com 2019 - 2024. All rights reserved.