Laravel雄辩地在日期上带有“ has”和“ where”

时间:2018-10-16 13:18:49

标签: sql laravel laravel-5 orm eloquent

当一对多关系中只有一条记录并且只有start_date比now()大的记录时,我尝试获取有关关系的记录,这就是我要尝试的:

$newStarters = User::has('periods', 1)->with(['periods' => function($q) {
            $q->where('start_date', '>', Carbon::now()->subWeek(2)->format('Y-m-d') );
        }])->get();

在这种情况下,日期过滤器不适用。

正确的方法是什么?

1 个答案:

答案 0 :(得分:0)

可能您正在寻找:

$newStarters = User::whereHas('periods',  function($q) {
            $q->where('start_date', '>', Carbon::now()->subWeek(2)->format('Y-m-d') );
        }, '=', 1)->get();

有关更多详细信息,请参见Query relationship existence部分。