使用updateOrCreate在Laravel中插入多个数据

Ron*_*ser 8 php orm laravel eloquent laravel-4

我使用以下插入数组Laravel中插入多个条目 Eloquent ORM

$i = 0;
foreach($exerciseValArray as $kkey=>$exerciseValue){
    if($exerciseValue['exercise'] =='' || $exerciseValue['section_type'] == ''){
        return Response::JSON(array('errors'=>array('Error in workout exercise section')));
    }   
    $exerciseData = explode(',',$exerciseValue['exercise']);
    foreach($exerciseData as $exerciseid){
        $insertArray[$i]['fk_workouts_id'] = $id;
        $insertArray[$i]['fk_users_id']    = $userId;
        $insertArray[$i]['fk_exercises_id']= $exerciseid;
        $insertArray[$i]['section']        = $exerciseValue['section_type'];
        $insertArray[$i]['status']         = 1;
        $insertArray[$i]['item_index']     = $index+$kkey+1;
        $insertArray[$i]['updated_at']     =  $workoutDetails['updated_at'];
        $i++;
    }
}
WorkoutExercise::insert($insertArray);
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常,并将数据数组插入到数据库中.

我已成功学习了Model::updateOrCreate一些模块的使用和使用它(即)

Model::updateOrCreate($attributes = array('key' => 'value'), $values = array('key' => 'value'));
Run Code Online (Sandbox Code Playgroud)

我的问题是如何编辑上面的插入片段,以便我可以使用Model::updateOrCreate它.我的$attributes字段是'fk_workouts_id','fk_users_id','fk_exercises_id',其余部分$values将被更改.

我不知道如何实现这一点.请帮忙......

Sat*_*nde 8

你可以试试,

第一道路

 $user = User::firstOrNew(array('name' => 'satish'));
 $user->field = 'value';
 $user->save();
Run Code Online (Sandbox Code Playgroud)

它将检查用户name=satish是否找到然后返回.如果没有找到,则创建新的并返回.然后您可以设置字段值.

检查此链接. http://laravel.com/docs/4.2/eloquent#insert-update-delete

第二种方式 手动检查记录存在.

 $arr=array('field'=>"value");
 $row = User::find($id);
  if ($row === null) {
       //Insert your record 

  } else {
       //update your record
  }
Run Code Online (Sandbox Code Playgroud)

更新

您还可以使用updateOrCreate- 更新现有模型或创建新模型(如果不存在).updateOrCreate坚持模型,所以没有必要打电话 save().

例-

// If there's a flight from Oakland to San Diego, set the price to $99.
// If no matching model exists, create one.
$flight = App\Flight::updateOrCreate(
    ['departure' => 'Oakland', 'destination' => 'San Diego'],
    ['price' => 99]
);
Run Code Online (Sandbox Code Playgroud)