后台
我正在创建一个围绕食物过敏的数据库,我有食物和过敏之间的许多关系。还有一个称为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种过敏React,每种过敏React的严重程度等级为0 - 4,如果这有帮助的话。
5条答案
按热度按时间jgwigjjp1#
你可以的
从Docs(4.2,5.0)中的这个例子:
前两行的硬编码版本:
动态地,当你的数组$allergy_ids和$severities处于兼容状态(大小和排序)时,你应该在之前准备好你的同步数据。类似于:
rxztt3cl2#
你不能像你喜欢的那样做,所以我建议一个简单的循环:
解决方法但是,如果您想附加具有单一严重级别/id的多个过敏,那么您可以这样做:
x759pob23#
从Laravel的5.1版本(目前在Laravel 10.x中)开始,可以将数组作为第二个参数传递,并将所有需要保存在中间表中的附加参数保存在中间表中。正如您在文档中看到的
为方便起见,attach和detach也接受ID数组作为输入:
那么你可以简单地做
pdsfdshx4#
所以,在Laravel 9上,在数组中传递id对我很有效。像这样
$user->roles()->attach([$a->id,$b->id,$c->id]);
等等。我猜不是传递字符串。我们可以只传递id或者将字符串转换为数组。
du7egjpx5#
最简单的方法是附加额外的数据,如下所示:
改变食物过敏严重程度的数值,但你会得到提示……:—)