Irm*_*mad 6 php relationship laravel eloquent
我有一个实体集,里面有很多项.因此,在更新集合时,表单还包括用于更新其项目的字段.我已经完成了它并且运行良好,但我不确定它是否是正确且最有效/优雅的方式.这是我的代码:
$set->fill(Input::all());
foreach (Input::get('course') as $course_id => $content) {
$item = $set->items->filter(function ($item) use ($course_id) {
return ($item->course_id == $course_id);
})->first();
$item->content = $content;
$set->items()->save($item);
}
$set->save();
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,对于每个项目,我遍历所有输入(可能会有多少输入),过滤它,并将值1保存为1.因此,每次迭代都会执行查询.我使用过滤器,因此它不必对每个检查进行查询.
所以我的问题是,是否有一种更有效/更优雅的方式来做到这一点?可能像saveMany()之类的东西?
您可以像这样使用saveMany方法:
$set->fill(Input::all());
$items = array();
foreach (Input::get('course') as $course_id => $content) {
$item = $set->items->filter(function ($item) use ($course_id) {
return ($item->course_id == $course_id);
})->first();
$item->content = $content;
$items[] = $item;
}
$set->items()->saveMany($items);
$set->save();
Run Code Online (Sandbox Code Playgroud)
正如laravel docs的相关模型中所指出的