Laravel对急切负载的简单约束

时间:2015-01-15 14:09:47

标签: php laravel

我有一个用户模型,属于一个站点。一个站点可以有很多用户。

用户表

  • ID
  • 名称
  • 电子邮件
  • ....
  • company_site_id

网站表

  • ID
  • 名称

该关系在User中定义如下:

public function site()
{
    return User::belongsTo('App\CompanySite', 'company_site_id', 'id');
}

我想简单地将所有用户分配到一个站点(假设站点ID为1)。

$users = \App\User::with(array('site' => function($query)
{
$query->where('id', '=', 1);

}))->get();
dd(count($users));

然而,这会使所有用户无论其网站如何都会返回。

1 个答案:

答案 0 :(得分:1)

使用->get();

,您将获得所有用户的原因

使用whereHas方法。这将查询您的关系并仅返回具有您想要/查询的关系结果的模型;

$users = User::whereHas('site', function($q)
{
    $q->where('id', '=', 1);

})->get();

因此,在此实例中将返回具有id为1的网站的用户。