我有多个与用户模型相关的模型(例如:个人资料,地址,订单等)
我想根据每个相关表中的update_at字段来获取过去24小时内更新的所有用户。
如果您有一个相关表,我发现了以下内容,但就我而言,我有3个以上的表需要检查:
$users = User::with('orders')
->where('updated_at', $valueA)
->whereHas('orders', function($query)
{
$query->where('updated_at', $valueB);
})->get();
我希望有人能帮助我知道如何将此方法应用于多个相关表上的多个where子句n =。
答案 0 :(得分:2)
尝试以下代码,
$users = User::with(['profiles', 'addresses', 'orders'])
->whereDate('updated_at','>', $yesterdayDate)
->orWhereHas('orders', function($query) use ($yesterdayDate){
$query->whereDate('updated_at','>', $yesterdayDate);
})->orWhereHas('addresses', function($query) use ($yesterdayDate) {
$query->where('updated_at','>', $yesterdayDate);
})->orWhereHas('profiles', function($query) use ($yesterdayDate){
$query->where('updated_at','>', $yesterdayDate);
})->get();
答案 1 :(得分:1)
如果您与用户有直接关系,例如订单,配置文件,地址等所有模型,则可以尝试。
$valueA = $time // whatever time you want
$users = User::
where('updated_at', $valueA)
->whereHas('orders', function($query) use ($valueA)
{
$query->where('updated_at', $valueA);
})
with('orders')
->whereHas('profiles', function($query) use ($valueA)
{
$query->where('updated_at', $valueA);
})
with('profiles')
->whereHas('addresses', function($query) use ($valueA)
{
$query->where('updated_at', $valueA);
})
with('addresses')
->get();
谢谢。