從來就得到了3種型號Laravel 4>急切裝載> ORDERBY嵌套關係
1 - 廊
class Gallery extends \Eloquent {
public function media()
{
return $this->hasMany('Media');
}
}
2-媒體
class Media extends \Eloquent {
protected $table = 'media';
public function labels()
{
return $this->belongsTo('Label');
}
}
3 - 標籤
class Label extends \Eloquent {
public function media()
{
return $this->hasMany('Media');
}
}
我試圖加載一個特定的畫廊的媒體。媒體應按照關聯的標籤進行分組,並按標籤名稱列排序。
這isn't工作:
$gallery = Gallery::with([ 'media.labels' => function($q)
{
$q->orderBy('name', 'desc');
} ])->where('name', 'Gallery1')->first();
舉個例子輸出的排序方式:
Gallery1
ALabel
Media1
Media2
BLabel
Media3
CLabel
Media4
Media5
Media6
我不認爲這是正確的,你的''Media'屬於關聯( '標籤')'。這意味着每個「媒體」只有一個「標籤」。相反,你應該使用'belongsToMany('Label')',因爲每個'Media'可能有多個'Label'。 – Andy 2015-02-10 19:34:14
感謝您指出這一點。我的輸出示例有點令人困惑,但它正是我想要的:每個媒體同時屬於一個標籤 - 不是多個。我優化了輸出示例 – Kristo 2015-02-11 22:12:30