0

I have a dynamic input form, I want to check if the record exists, if no then it can not insert data

my controller

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

if insert one data, success.. but if insert array in my controller not check.. why in input array data always insert???

Felix
  • 571
  • 14
  • 34
Dunhill
  • 3
  • 1
  • 6

3 Answers3

1

This is pseudo for only check 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();
        }
    }
Felix
  • 571
  • 14
  • 34
0

You could use exists()

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

Also I would suggest you reduce the amount of in-line stuff you're doing, instead something like this:

$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
}
hylian
  • 550
  • 1
  • 4
  • 19
0

If I understand correctly, you want to insert a Master if a given id_a and id_b doesn't already exists for one Master

If so, you could actually use firstOrCreate :

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