所以我在注意力和服务/程序之间有一种多对多的关系.
病人有很多注意力,注意力属于病人.
当我开始关注程序(多对多关系)时,问题就出现了
我根据Laravel文档转换数据,使用集合.
$procedures = Procedure::all()->mapWithKeys(function ($procedure,$key) {
return [$procedure['id'] => [
'price' => $procedure['price'],
'price_USD' => $procedure['price_USD'],
'amount' => rand(1, 10),
]];
});
这将返回一个值密钥对,其中数组密钥是过程id.
但当我试图将程序与注意联系起来时.
$attention->procedures()->attach($procedures->random(rand(1,10))->all());
迁移抛出了一个错误.
经过一段时间的调试,这就是ray抛出的结果.
程序:
array:3 [▼
0 => array:3 [▼
"price" => 439.39
"price_USD" => 17.87
"amount" => 1
]
1 => array:3 [▼
"price" => 287.39
"price_USD" => 11.69
"amount" => 4
]
2 => array:3 [▼
"price" => 0.68
"price_USD" => 0.03
"amount" => 8
]
]
查询:
insert into
`attention_procedure` (
`amount`,
`attention_id`,
`price`,
`price_USD`,
`procedure_id`
)
values
(8, 1, 651.72, 26.51, 0),
(10, 1, 403.18, 16.4, 1),
(10, 1, 629.08, 25.59, 2),
(10, 1, 930.84, 37.86, 3),
(6, 1, 330.7, 13.45, 4),
(5, 1, 629.53, 25.61, 5),
(2, 1, 241.81, 9.84, 6),
(10, 1, 354.68, 14.43, 7)
正如你所见,it's trying to insert 0 as one of the procedure ids是不存在的.
如何使集合返回过程id作为数组键?