2015-12-10 7 views
4

Как бы я сделать один запрос для вставки в несколько таблиц с использованием Laravel Eloquent ORM отношения доменом .ru Laravel Eloquent ORM многоуровневые таблицы вставить

Таблица 1: пользователи

  • идентификатор
  • имя
  • электронная почта

Таблица 2: должности

  • ID
  • идентификатор_пользователя
  • содержание

Таблица 3: Изображение

  • ID
  • идентификатор_пользователя
  • POST_ID
  • имя_образа

отношения

  1. Таблица users ссылки ID user_id в двух других таблиц.
  2. Таблица posts имеет отношение «один-много» к users.
  3. Таблица images имеет отношение «один к большому» с users и post т.е. его можно использовать с другими пользователями и другими сообщениями.

Так что, когда вы делаете запись, она должна вставить запись в таблицы одним запросом.

ответ

2

Это один из способов сделать это:

$post = (new Post)->fill($request->all()->toArray())->user()->associate(Auth::user())->save(); 

Что касается изображений, Post модели должна иметь модель события, как static::created для обработки загрузки изображений и манипуляции.

Или, чтобы иметь смысл, модельное событие в модели Post должно инициировать другое модельное событие от модели Image.

->toArray() может быть факультативным, я не могу проверить его здесь, где я сейчас.

+0

Если вы, пожалуйста, уточните, что будет наиболее полезным? –

+0

, что делает метод 'associate'? –

+1

Он связывает пользователя с сообщением, так как он правильно сохранит идентификатор аутентифицированного пользователя в поле user_id из таблицы сообщений. – user2094178

Смежные вопросы