使用with方法Eloquent添加表别名检索关系

时间:2014-12-12 09:19:06

标签: php laravel eloquent

我知道当您使用Eloquent使用with方法检索关系时,是否可以为表提供别名?

例如:

Post::where('title', 'like', '%' . $title . '%')
    ->where('published', 1)
    ->with(['medias AS jpeg' => function($q) {
          $q->where('format', 'jpeg'); 
 }])->with(['medias AS gif' => function($q) {
          $q->where('format', 'gif');
 }])->first();

我知道这不起作用,但这是为了给你一个情况。

是否可以手动或必须这样做?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

这是不可能的,因为with不接受表,但是关系名称,它只存储给定关系的结果一次。

因此,只需定义不同的关系:

public function gifs()
{
  return $this->hasMany('Media')->where('format', 'gif');
}

public function jpegs()
{
  return $this->hasMany('Media')->where('format', 'jpeg');
}

hasMany或显然是任何关系类型。