如何使用Realtionship在laravel中的数据库中插入嵌套的2d数组

时间:2019-07-10 08:52:54

标签: php mysql database laravel orm

我正在尝试使用称为Phone的实现船来保存Home模型,我想为其插入无限的Phone。现在,我可以毫无问题地插入房屋,但是在电话方面,我无法将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"
  }
]

1 个答案:

答案 0 :(得分:0)

createMany需要带有键/值的多维数组,例如:

$home->phones()->createMany([
    [
        'number' => '049230323432',
    ],
    [
        'number' => '432094249023',
    ],
]);

所以你应该喜欢:

$phones = $request->input('phones');
$insertPhone = [];
foreach ($phones as $phone) {
    $insertPhone []= [
        'number' => $phone,
    ];
}