2017-06-07 46 views
0

不幸的是,我在「評論,遊戲和信息」表之間創建了一個關係,但主表是Games,他命令我所有的遊戲,而我想訂購「審查」表的ID。OrderBy之後HasMany和屬於的關係

Models: Review 
    public function games() 
    { 
     return $this->hasMany('App\Models\Giochi', 'id_gioco', 'id'); 
    } 
Models: Giochi 
    public function review() 
    { 
      return $this->belongsTo('App\Models\Review', 'id', 'id_gioco'); 
    } 
    public function infogiochi() 
    { 
      return $this->belongsTo('App\Models\InfoGiochi', 'id', 'id_gioco'); 
    } 
Models: InfoGiochi 
    public function games() 
    { 
     return $this->hasMany('App\Models\Giochi', 'id', 'id_gioco'); 
    } 
Controller: 
$review = Giochi::with('Review','InfoGiochi')->orderBy('id','DESC')->get(); 

這裏是我的JSON的截圖:

enter image description here

如何訂購審查表ID的內容?

回答

0

您有2個選項。您在sql語句中使用連接和順序,或者在檢索集合中的結果後對其進行排序。

使用加入

Giochi::select('giocos.*') 
    ->with('Review','InfoGiochi') 
    ->leftJoin('reviews', 'reviews.id', '=', 'giocos.id_gioco') 
    ->orderBy('reviews.id','DESC') 
    ->get(); 

分類收集

Giochi::with('Review','InfoGiochi') 
    ->get() 
    ->sortByDesc(function($giochi) { 
     return $giochi->review->id; 
    }); 
0

您可以用原始查詢嘗試,或者您可以使用- >排序依據()直接查看功能。

+0

我把'$返回這 - >屬於關聯( '應用程序\ \型號審查', '身份證', 'id_gioco' ) - > orderBy('id','DESC')'但它不起作用... – LegoLiam

0

,當你啓動它可以修改你的關係查詢:

Giochi::with([ 
    'Review' => function ($query) { return $query->orderBy('id','DESC'); }, 
    'InfoGiochi' 
])->orderBy('id','DESC'); 
+0

繼續爲id.Giochi訂購內容:https://i.imgur.com/dviRb5B.png – LegoLiam

+0

@LegoLiam我已經在我的機器上進行了測試,查詢正常工作,你怎麼樣查看評論列表? – apokryfos

+0

模型是我把它們放在第一條消息中,我上傳[截圖](https://i.imgur.com/cUW86iN.png),否則你不明白這裏的代碼... – LegoLiam