gpt4 book ai didi

Laravel 将数据透视表附加到具有多个值的表

转载 作者:行者123 更新时间:2023-12-02 07:27:46 25 4
gpt4 key购买 nike

背景

我正在创建一个围绕食物过敏的数据库,并且食物和过敏之间存在多对多的关系。还有一个称为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,如果这有帮助的话。

最佳答案

你可以。

从此文档中的示例( 4.25.0 ):

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

关于Laravel 将数据透视表附加到具有多个值的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23226802/

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