2016-04-21 185 views
2

我laravel應用structed這樣的:Laravel複雜關係

  • 人:型號&控制器
  • 寵物:型號&控制器。有多對多的關係人
  • Abiilities:型號&控制器。
  • People_pets:人的寵物。 (數據透視表,people_idpet_id)。還有4列abbility1_id,abbility2_id,abbility3_idabbility4_id。現在

..我建立了一個API方法來回報用戶的寵物,和它看起來像這樣:

public function pets() 
    { 
     return $this->belongsToMany(Pet::Class, 'user_pets')->withPivot(
     'abbility1_id', 
     'abbility2_id', 
     'abbility3_id', 
     'abbility4_id' 
     )->orderBy('position','asc'); 
    } 

這使得$user->pets回報寵物的用戶列表,user_pets的樞軸信息能力ID。

問題 我想要做的是一個JSON對象添加到名爲「abbilities」這種方法的結果,並獲得abbilities的數據有,如名稱,並從Abbilities模型/控制器描述。

我如何才能將ID的信息添加到我的查詢中?

當前API調用的輸出:

Current output

所需的輸出:與attack_id的的細節每一個寵物的對象內Abbilities的陣列內$user->pets->pivot->attack1_id

回答

0

你可以只使用查詢生成器和orWhere來獲取數據。我不認爲你可以通過與你建立的關係來訪問它。

我不知道你如何訪問你的寵物能力ID,但我猜這就像$pet->abbility1_id

$abbilities = Abbilities::where('id', '=', $pet->abbility1_id) 
    ->orWhere('id', '=', $pet->abbility2_id) 
    ->orWhere('id', '=', $pet->abbility3_id) 
    ->orWhere('id', '=', $pet->abbility4_id) 
    ->get(); 
+0

我不知道如何訪問過,因爲我得到它只是如上圖所示的方法的結果,在我的問題\: – TheUnreal

+0

那麼,如果它拉到通過多對多的關係,你應該可以從'$ pet'訪問它。你有什麼嘗試? – DuckPuncher

+0

嘿@DuckPuncher,檢查我的問題更新,我添加了我的API調用結果和所需的輸出,使其更加清晰地理解我想要實現的目標。 – TheUnreal