Laravel Eloquent - 仅当数据与一对多关系匹配时才获取数据

时间:2014-12-03 00:58:07

标签: php laravel eloquent one-to-many eager-loading

我有一对多的关系设置。

客户可以拥有许多学生,学生可以拥有Full或Left状态。

我想只有在学生满满的情况下才能取得客户。

我认为Eager Loading可以解决这个问题,但如果他们没有完整的学生,它仍然会回归客户:

$customers = Customer::with(array('students' => function($query)
    {
      $query->where('STATUS', '=', 'FULL');
    }))->get();

在谷歌上搜寻过但无法找到任何内容,不确定如何说出这个问题。

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

您只是选择要使用该查询撤回的关系。您想要的是选择客户其中关系具有某些属性

尝试:

$customers = Customer::whereHas('students', function($q) {
    $q->where('STATUS', '=', 'FULL');
})->get();

进一步阅读:

http://laravel.com/docs/4.2/eloquent#querying-relations