Laravel Eloquent:如何通过whereHas()方法获取相关记录?

Sta*_*lav 5 laravel eloquent

例如,我可以查看具体日期的每个帖子.

$users = User::whereHas('posts', function($q){
    $q->where('created_at', '>=', '2015-01-01 00:00:00');
})->get();
Run Code Online (Sandbox Code Playgroud)

但是假设,如果我想比较一个帖子模型日期(created_at)和用户模型的日期属性该怎么办?

例如:

$users = User::whereHas('posts', function($q){
    $q->where('created_at', '>=', ** $user->customDate ** ? look this);
})->get();
Run Code Online (Sandbox Code Playgroud)

UPD.我在Laravel之外使用Eloquent.

DfK*_*era 4

您可以通过使用 来在 Eloquent 子查询上使用原始表达式$q->whereRaw

在你的例子中:

$users = User::whereHas('posts', function($q){
    $q->whereRaw("created_at >= users.customDate");
})->get();
Run Code Online (Sandbox Code Playgroud)

与 不同的是DB::raw,这可以在没有 Laravel 的 Facade 依赖注入的情况下使用Illuminate\Database