как вставить 2 массива с createmany в Laravel - PullRequest
1 голос
/ 07 июля 2019

У меня есть отношение, которое я пытаюсь вставить с отношением в модель, все хорошо, когда я просто добавляю номера телефонов, но когда я добавляю поле secound, которое является type_id, я не могу его обработать, потому что оно не будет вставлять поле secound вВот таблица, как я делаю это в моем магазине контроллеров. Я хочу, чтобы мой пользователь мог отправлять неограниченное количество телефонных номеров, и у каждого из них есть type_id. Как мне этого добиться:

  public function store(StoreHome $request)
    {
        $validated = $request->all();
        if (!$validated) {
            return $this->sendError('Validation Error.', $validated->errors());
        }

        $home = Home::create($validated);
        $phones = [];
        $type_id = [];
        $numbers = $request->input('phones');
        $type_id = $request->input('type_id');
        foreach($numbers as $number => $item){
            $phones[] = [
                'phone' => $number
            ];
            $types[] = [
              $type_id[] = [
                  'type_id' => $type_id[$item]
              ]
            ];
        }

        $home->phones()->createMany($phones);


        return new HomeResource($home);

Ответы [ 2 ]

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

Пример решения;

$datas = [];
foreach($numbers as $number => $item){
    array_push($datas, [$number =>  $type_id[$item]]);
}

foreach ($datas as $key => $value) {
    Home::create([
        'phone' => $key,
        'type_id' => $value
    ]);
}
0 голосов
/ 07 июля 2019

Вы передаете $phones в createMany, эта переменная не содержит никаких type_id, потому что вы помещаете их в переменную $types, которая, кроме того, не объявлена ​​(я полагаю, вы неправильно набрали $type_id = []; вместо $types = [];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...