Laravel 5,仅获取 eloquent 模型的关系

Laravel 5, get only relationship for eloquent model

我的应用程序中有用户和文章模型。它们之间的关系很简单:

//article.php
use Taggable;

public function user()
{
    return $this->belongsTo('App\User');
}

文章使用了 Taggable 库,它为我提供了多种方法,例如 Article::withAnyTags(returns 所有带有 'xyz' 字符串标记的文章)。现在我想让所有发布 article/s 的用户都标记为 'xyz'。我知道如何分两行执行此操作,但有些事情告诉我这是不对的。理想情况下,我想做这样的事情:

$users = Article::withAnyTags('xyz')->with('user')->select('user'); --pseudocode 

在eloquent中可以这样做吗?

旁注:我认为我可以用 DB::table 做到这一点,但这对我来说不是一个选择。请注意,我的伪代码末尾没有“->get()”。是这样的,因为我正在使用仅适用于 eloquent 查询的 lib 对用户的结果集进行分页。

您可以使用 whereHas():

User::whereHas('articles', function ($query) {
    $query->withAnyTags('xyz');

})->paginate();

或者如果您需要将标签变量传递给闭包,您可以这样做:

$tag = 'xyz';

User::whereHas('articles', function ($query) use($tag) {
    $query->withAnyTags($tag);

})->paginate();