Laravel 5.5 - 更新与给定的两个输入数组
问题描述:
的自定义字段的枢轴表我有2个输入阵列,一个用于成分,一个用于所需用于相关联的配方中的成分的量。我的数据透视表有四列 - id
,recipe_id
,ingredient_id
和amount
。我想使用sync
方法来更新数据透视表,但是我无法弄清楚我将如何去传递第二个“数量”数组值并确保它们与正确的记录同步?Laravel 5.5 - 更新与给定的两个输入数组
$ingredients = $request->ingredients;
$ingredientAmounts = $request->ingredients_amount;
$project->ingredients()->sync($ingredients => ['amount' => $ingredientAmounts]);
的成分及其量都将具有相同的密钥,所以我想我可以遍历他们手动和更新数据透视表,但我觉得会有一个更简单的方法,这将更好地利用雄辩。
答
两个输入数组需要合并是在要求的格式:
$user->roles()->sync([1 => ['expires' => true], 2, 3]);
从https://laravel.com/docs/5.5/eloquent-relationships#updating-many-to-many-relationships
$array = [];
foreach ($ingredients as $key => $ingredient) {
$array[$ingredient->id] = ['amount' => $ingredientAmounts[$key]];
}
$project->ingredients()->sync($array);