gpt4 book ai didi

php - Laravel Eloquent - 保存/更新相关的一对多关系数据

转载 作者:可可西里 更新时间:2023-11-01 13:24:13 25 4
gpt4 key购买 nike

我有一个实体集,里面有很多项目。因此,在更新集合时,表单也包含用于更新其项目的字段。我已经做到了并且运行良好,但我不确定这是否是正确且最有效/优雅的方法。这是我的代码:

        $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();

如您所见,对于每个项目,我循环遍历所有输入(可能会因输入的数量而异)、过滤它,然后将值 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();

laravel docs的相关模型所指

关于php - Laravel Eloquent - 保存/更新相关的一对多关系数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28468502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com