2015-12-10 148 views
4

我將如何使一個單一的請求,使用laravel雄辯ORM關係.IElaravel雄辯ORM多個表中插入

表1的多個表中插入:用戶

  • ID
  • 電子郵件

表2:帖子

  • ID
  • USER_ID
  • 內容

表3:圖像

  • ID
  • USER_ID
  • POST_ID
  • IMAGE_NAME

關係

  1. users ID引用user_id在其他兩個表。
  2. postsusers有一對多關係。
  3. imagesuserspost有一對多關係,即它可以與其他用戶和其他帖子共享。

因此,當一個人進行帖子插入時,它應該使用單個查詢插入表中的記錄。

回答

2

這是做這件事的一種方法:

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

至於形象,Post模式應該有一個模型事件如static::created處理圖像上載和操縱。

或者更有意義的是,Post模型中的模型事件應引發來自Image模型的另一模型事件。

->toArray()可能是可選的,我現在無法在這裏測試它。

+0

如果您想詳細說明,那將是最有幫助的嗎? –

+0

,'associate'方法做了什麼? –

+1

它將用戶與帖子相關聯,因爲它會將已認證用戶的ID正確存儲到帖子表的'user_id'字段中。 – user2094178