【发布时间】:2014-12-28 18:17:20
【问题描述】:
我有 3 个模型
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');
}
}
我正在尝试加载包含所有媒体的特定图库。媒体应按关联的标签分组,并按标签名称列排序。
这不起作用:
$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
【问题讨论】:
-
我认为您的
MediabelongsTo('Label')不正确。这意味着每个Media只有一个Label。相反,您应该使用belongsToMany('Label'),因为每个Media可能有多个Labels。 -
感谢您指出这一点。我的输出示例有点令人困惑,但这正是我想要的:每个媒体一次属于一个标签 - 而不是多个。我优化了输出示例