如何使用关系在laravel中的数据库中插入嵌套的二维数组
Posted
技术标签:
【中文标题】如何使用关系在laravel中的数据库中插入嵌套的二维数组【英文标题】:how to insert a nested 2d array in database in laravel using realtionship 【发布时间】:2019-11-19 20:39:10 【问题描述】:我正在尝试使用名为 Phone 的现实船来保存 Home 模型,我想为其插入无限的电话。现在我插入 home 没有任何问题,但是当涉及到电话时,我无法将我的 2d 阵列插入到电话中!这是我的控制器:
$validated = $request->all();
if (!$validated)
return $this->sendError('Validation Error.', $validated->errors());
$home = Home::create($validated);
$phones = $request->input('phones');
for ($i =0; $i < count($phones); $i++)
$insertPhone[$i] = json_decode($phones[$i]);
dd($insertPhone);
$home->phones()->createMany($insertPhone);
return new HomeResource($home);
下面是 $insertPhone 的 dd 结果:
array:2 [
0 => #533
+"value": "123"
+"is_attachment": "true"
1 => #538
+"value": "456"
+"is_attachment": "true"
]
【问题讨论】:
具体出了什么问题? 你为什么使用json_decode
?我想电话来自输入?
@VincentDecaux 它是一个 api,所以我认为它作为参数进入正文
@showdev 它不会只插入空行
【参考方案1】:
createMany
需要一个带有键/值的多维数组,例如:
$home->phones()->createMany([
[
'number' => '049230323432',
],
[
'number' => '432094249023',
],
]);
所以你应该这样做:
$phones = $request->input('phones');
$insertPhone = [];
foreach ($phones as $phone)
$insertPhone []= [
'number' => $phone,
];
【讨论】:
但考虑一下我从前面收到的内容如下: phones=[ "value":"21351321" , "is_attachment":"true" ] 哦,是的,抱歉没有检查您帖子中的 dd。看起来没问题,你的 $home 在 create 之后设置好了吗?你的关系有效吗? 是的,它有效,我在输入时检查了它,因为将插入硬代码数据以上是关于如何使用关系在laravel中的数据库中插入嵌套的二维数组的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Eloquent:获取嵌套关系中的数据总和并将其添加为新属性