Как вставить отношения один ко многим в Laravel - PullRequest
0 голосов
/ 06 июля 2019

У меня есть отношение один ко многим между Home моделью и Phones моделью

public function phones() {
    return $this -> hasMany(Phone::class);
}

и в модели телефона:

public function homes() {
    return $this -> belongsTo(Home::class);
}

Теперь в моемконтроллер, когда я вставляю Home, я хочу использовать его, чтобы иметь возможность добавлять неограниченные числа в таблицу Phone с теми же id из Home.Вот как я сейчас вставляю:

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

    $home = Home::create($validated);
    return new HomeResource($home);
}

Теперь я хочу знать, как я могу вставить Home со многими Phones в телефонный стол и в игру.

Ответы [ 2 ]

1 голос
/ 06 июля 2019
$post->comments()->createMany([
    [
        'message' => 'A new comment.',
    ],
    [
        'message' => 'Another new comment.',
    ],
]);

Подробнее см. В документах https://laravel.com/docs/5.8/eloquent-relationships#inserting-and-updating-related-models

Обновить с примером:

предположим, что вы используете несколько полей ввода для ввода чисел.

<input name="numbers[]">
<input name="numbers[]">

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

$home->phones()->createMany($phones);
0 голосов
/ 06 июля 2019

Так как вы создали свой Дом, вы можете использовать save или saveMany в отношении:

$home->phones()->saveMany([
    new App\Phone(['phone' => '039049230490']),
    new App\Phone(['phone' => '039049223132']),
]);

Вы можете найти все документы здесь: https://laravel.com/docs/5.8/eloquent-relationships#the-save-method

...