Eloquent根据相关表格中的字段获取模型

问题描述 投票:1回答:2

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

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

如果你有一个相关的表我找到了以下内容,但在我的情况下,我需要检查超过3个表:

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

我希望有人可以帮助我知道如何在多个相关表的多个where子句中应用它。

laravel laravel-5 eloquent
2个回答
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
投票

如果您有来自用户与订单,个人资料,地址等所有模型的直接关系,那么您可以试试这个。

         $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();

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.