2016-08-08 80 views
0

我有2个模型,用户模型和Post模型。我正在尝试获取在某个日期范围内发布的用户的集合。我只是迷失在如何将两个模型结合在一起。两者之间有一对多的关系。Laravel获取收藏集

用户模型:

public function posts() 
{ 
    return $this->hasMany('App\Models\Post', 'user_id'); 
} 

所以,我想用户的集合,职位日期日期2之间1 &,如果用户有那些日期之间的职位,我希望这些岗位的集合。我知道我可以使用WhereBetween作为查询构建器,但我可以使用它来进行口头表达吗?另外,如何将具有这些帖子的用户模型排序? filter()方法如何?

$users = Users::all(); 

$users = $users->filter(function() { 
    foreach ($users as $user) 
    { 
     if ($user->posts->whereBetween(date 1, date 2)) 
     { 
     return true; //something like that 
     } 
    } 
}); 

回答

3

最好是根据需要加载您的关系模型,然后处理结果。不需要使用if检查。

$users = Users::with(['posts' => function($query) { 

    $query->whereBetween(date 1, date 2); 

}])->get(); 

更多信息:Eager Loading

+0

或者你可以使用'whereHas' :) – Maraboc