Получить идентификатор сохраненного сводного элемента - PullRequest
0 голосов
/ 19 октября 2019

Я хотел бы решить следующую проблему:

У меня есть модель (Car), которая загружается как отношение к другой модели (Driver) с помощью сводной таблицы.

Автомобиль -> DriverToMany Driver (с Pivot) -> принадлежность ToMany Accessoires (с Pivot).

Модель, в свою очередь, имеет отношения (accessories), которые загружаются с помощью Pivot.

Проблема: модель Accessories имеет две сводные таблицы, которые могут быть загружены в зависимости от других факторов. Если модель Accessories загружена как отношение Driver как отношение Car, сводные таблицы должны быть выведены правильно.

Вот как это выглядит в данный момент:

 collect($request->input('data.driver'))->each(function ($driver) use
        (
            $car
        ) {

            $ndriver = Driver::findOrFail($driver['id']);

            $added = $car->driver()->save($driver, [
                'custom' => $driver['custom'],
                'title' => $driver['title'],
                'factor' => $driver['factor'],
            ]);

            /*Save attributes*/
            $added->syncDriverAttributes($driver['attributes']],
                $car->id);
        });

Теперь я должен указать в $added->syncDriverAttributes($driver['attributes'], $car->id); идентификатор сводки созданных сводных данных в $added. К сожалению, я не могу выяснить, какой сейчас идентификатор сводки, потому что он не возвращается в $added.

Проблема: я также не могу найти последний идентификатор сводки из отметки времени,потому что все записи имеют одинаковую метку времени.

Поэтому мой вопрос: как я могу решить это?

1 Ответ

0 голосов
/ 20 октября 2019

Конечно, вы можете сделать это, но вы должны использовать метод withPivot при определении ваших отношений, чтобы указать, какие дополнительные поля вы хотите иметь:

public function driver()
{
   return $this->belongsToMany(Driver::class)->withPivot(['id']);
}
...