背景
我正在创建一个围绕食物过敏的数据库,并且食物和过敏之间存在多对多的关系。还有一个枢轴值称为severity
其中有一个数字代表对该食品过敏的严重程度。
这个链接表看起来像这样;
food_id|allergy_id|severity
-------|----------|--------
1 | 1 | 3
1 | 4 | 1
2 | 2 | 1
问题
当尝试使用 Eloquent 更新链接表时(其中$allergy_ids
是一个数组)
$food->allergies()->attach($allergy_ids);
我如何将多个值与数据透视表一起添加到该数据透视表中?
我可以添加所有allergy_id
使用上面的行一次性添加特定的食品,但是我怎样才能添加severity
列同时包含各种严重性值的数组?也许像
$food->allergies()->attach($allergy_ids, $severity_ids);
编辑:对于特定食物可能有 0-20 种过敏,每种过敏的严重程度等级为 0-4,如果这有帮助的话。
You can.
从文档中的这个示例(4.2 http://laravel.com/docs/4.2/eloquent#working-with-pivot-tables, 5.0 http://laravel.com/docs/5.0/eloquent#working-with-pivot-tables):
$user->roles()->sync(array(1 => array('expires' => true)));
前两行的硬编码版本:
$food = Food::find(1);
$food->allergies()->sync([1 => ['severity' => 3], 4 => ['severity' => 1]]);
动态地,当您的数组 $allergy_ids 和 $severities 处于兼容状态(大小和排序)时,您应该先准备同步数据。就像是:
$sync_data = [];
for($i = 0; $i < count($allergy_ids); $i++))
$sync_data[$allergy_ids[$i]] = ['severity' => $severities[$i]];
$food->allergies()->sync($sync_data);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)