Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel Eloquent:如何通过whereHas()方法获取相关记录?_Laravel_Eloquent - Fatal编程技术网

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

Laravel Eloquent:如何通过whereHas()方法获取相关记录?,laravel,eloquent,Laravel,Eloquent,例如,我可以用具体的日期检查每个帖子 $users = User::whereHas('posts', function($q){ $q->where('created_at', '>=', '2015-01-01 00:00:00'); })->get(); 但是假设,如果我想将post model日期(created_at)与user model的date属性进行比较,该怎么办 例如: $users = User::whereHas('posts', functi

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

$users = User::whereHas('posts', function($q){
    $q->where('created_at', '>=', '2015-01-01 00:00:00');
})->get();
但是假设,如果我想将post model日期(created_at)与user model的date属性进行比较,该怎么办

例如:

$users = User::whereHas('posts', function($q){
    $q->where('created_at', '>=', ** $user->customDate ** ← look this);
})->get();
$users = User::whereHas('posts', function($q){
    $q->whereRaw("created_at >= users.customDate");
})->get();
upd。
我在拉威尔之外使用雄辩的语言

假设您的用户表刚刚被称为
users
,您可以使用
DB::raw()
像在普通查询中一样引用一个值:

$users = User::whereHas('posts', function($q){
    $q->where('created_at', '>=', DB::raw('users.customDate'));
})->get();
不要忘记导入
DB
facade,或者将其更改为
\DB::raw(…)

如果您在Laravel之外使用此工具,并且没有正面,您可以删除中间商并执行以下操作:

$q->where('created_at', '>=', new Illuminate\Database\Query\Expression(('users.customDate'));

希望这有帮助

您可以使用
$q->whereRaw
在雄辩的子查询上使用原始表达式

在您的示例中:

$users = User::whereHas('posts', function($q){
    $q->where('created_at', '>=', ** $user->customDate ** ← look this);
})->get();
$users = User::whereHas('posts', function($q){
    $q->whereRaw("created_at >= users.customDate");
})->get();

DB::raw
不同,这可以在没有Laravel对
light\Database
facade的依赖注入的情况下使用。

customDate是用户表中的一个字段吗?是的,MySQL日期字段类型有什么意义?你想达到什么目的?例如,我想在具体的一天获得所有的帖子,这是为具体的用户定义的。嗯,你的方法在这种情况下有效吗?ScheduledEvent::find(1)->orders->where('dateFrom','=',ORDER\u CUSTOM\u DATE)@斯坦尼斯拉夫什么?!?这是一个类似的任务,在where条件下,where需要通过concrete order.customDate从相关orders表中获取记录。我有一个问题-我使用Laravels之外的雄辩,没有数据库管理器的facades和raw()方法。也许你知道其他的解决方法?很抱歉。当你用
Laravel
标记问题时,我假设你使用的是Laravel。我假设你有整个
illumb\Database
包?