2016-08-08 14 views
0

私は2つのモデル、UserモデルとPostモデルを持っています。特定の期間に投稿したユーザーのコレクションを取得しようとしています。私はちょうど2つのモデルを結びつける方法に迷っています。この2つの間には1対多の関係があります。Laravelコレクションのためのコレクションを取得する

ユーザーモデル:だから

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

、私はポストは、日付の間で1 &日2され、ユーザーはこれらの日付の間のポストを持っている場合、私はそれらの記事の収集を希望するユーザーの集まりをしたいです。私はwhereBetweenをクエリービルダーに使うことができますが、私はそれを雄弁に使うことができますか?また、これらの投稿を持つモデルでUserモデル全体をどのように並べ替えるのですか? 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

関連する問題