基于相关表中的字段的雄辩的获取模型

时间:2019-03-01 03:58:26

标签: laravel laravel-5 eloquent

我有多个与用户模型相关的模型(例如:个人资料,地址,订单等)

我想根据每个相关表中的update_at字段来获取过去24小时内更新的所有用户。

如果您有一个相关表,我发现了以下内容,但就我而言,我有3个以上的表需要检查:

$users = User::with('orders')
            ->where('updated_at', $valueA)
            ->whereHas('orders', function($query)
                {
                    $query->where('updated_at', $valueB);
                })->get();

我希望有人能帮助我知道如何将此方法应用于多个相关表上的多个where子句n =。

2 个答案:

答案 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();

谢谢。