Модели Eloquent Get на основе полей в связанных таблицах - PullRequest
0 голосов
/ 01 марта 2019

У меня есть несколько моделей, связанных с моей моделью пользователя (например, профили, адреса, заказы и т. Д.)

Я хочу получить всех пользователей, которые были обновлены за последние 24 часа, на основеполе update_at в каждой из связанных таблиц соответственно.

Я нашел следующее, если у вас есть одна связанная таблица, но в моем случае у меня есть более 3 таблиц, которые мне нужно проверить:

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

Я надеюсь, что кто-то может помочь мне узнать, как применить это для нескольких, где пункты n = для нескольких связанных таблиц.

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Если у вас есть прямое отношение от пользователей ко всем моделям, таким как заказы, профили, адреса и т. Д., Вы можете попробовать это.

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

Спасибо.

0 голосов
/ 01 марта 2019

Попробуйте следующий код,

$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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...