Как вставить вложенный 2d массив в базе данных в Laravel, используя Realtionship - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь сохранить модель 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);

и внизу результат dd для $ insertPhone:

 array:2 [
  0 => {#533
    +"value": "123"
    +"is_attachment": "true"
  }
  1 => {#538
    +"value": "456"
    +"is_attachment": "true"
  }
]

1 Ответ

0 голосов
/ 10 июля 2019

createMany ожидает многомерный массив с ключом / значением, например:

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

Таким образом, вы должны сделать так:

$phones = $request->input('phones');
$insertPhone = [];
foreach ($phones as $phone) {
    $insertPhone []= [
        'number' => $phone,
    ];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...