【发布时间】:2015-01-22 06:46:55
【问题描述】:
我在 Laravel Eloquent ORM987654321@ 中使用了以下 insert array 插入多个条目
$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);
上面的代码工作正常,并将数据数组插入到数据库中。
我已经学会了Model::updateOrCreate的用法,并在我的一些模块中成功使用了它(即)
Model::updateOrCreate($attributes = array('key' => 'value'), $values = array('key' => 'value'));
我的问题是如何编辑上面的插入 sn-p 以便我可以在其中使用Model::updateOrCreate。我的 $attributes 字段是 'fk_workouts_id'、'fk_users_id'、'fk_exercises_id' 和 $values 中的其余部分要更改。
我不知道如何实现这一点。请帮忙...
【问题讨论】:
-
Eloquent 不能插入/更新多行,需要一一处理。
insert方法实际上是Query\Builders,它根本不使用 Eloquent 功能(例如时间戳等)。 -
如果数据存在@JarekTkaczyk,
Eloquent或Query\Builder是否还有其他方法可以创建条目或更新。因为我需要更新或创建近 20-50 个数据,是不是一个接一个的好习惯?? -
好的做法是什么?您可以编写 3 行代码让 Eloquent 完成这项工作,或者说 13 行代码让您完成这项工作。 Eloquent 有
firstOrNew方法,这是要走的路。 -
Jarek Tkaczyk 已经给了你答案,没有办法解决。你在找什么? (因为您添加了赏金)
标签: php laravel laravel-4 orm eloquent