Laravel 5.5 - 更新与给定的两个输入数组

问题描述:

的自定义字段的枢轴表我有2个输入阵列,一个用于成分,一个用于所需用于相关联的配方中的成分的量。我的数据透视表有四列 - idrecipe_idingredient_idamount。我想使用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);