Laravel Eloquent-Save/Update Related One-To-Many Relationship Data

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

        $set->fill(Input::all());

        foreach (Input::get('course') as $course_id => $content) {
            $item = $set->items->filter(function ($item) use ($course_id) {
                return ($item->course_id == $course_id);
            })->first();
            $item->content = $content;
            $set->items()->save($item);
        }
        $set->save();

Как вы можете видеть, для каждого элемента я перебрал все входные данные (которые могут отличаться от того, сколько у него есть), отфильтровал его и сохранил значение 1 на 1. Таким образом, запрос выполняется для каждой итерации. Я использую фильтр что он не должен делать запрос для каждой проверки.

Итак, мой вопрос, существует ли более эффективный/элегантный способ сделать это? Что-то вроде saveMany() может быть?

1 ответов


вы можете использовать метод saveMany такой:

        $set->fill(Input::all());
        $items = array();
        foreach (Input::get('course') as $course_id => $content) {
            $item = $set->items->filter(function ($item) use ($course_id) {
                return ($item->course_id == $course_id);
            })->first();
            $item->content = $content;
            $items[] = $item;
        }

        $set->items()->saveMany($items);
        $set->save();

как указано в соответствующих моделях laravel docs