Laravel Eloquent Извлекает журналы, которые принадлежат только пользователям, которые принадлежат магазину

#laravel #eloquent

#laravel #eloquent

Вопрос:

У меня есть 3 модели, подобные этой

Пользователи

принадлежит магазину

журналы

принадлежит пользователю

Магазин

теперь мне нужно извлекать только журналы пользователей, которые принадлежат только магазину

Вот мой запрос, но неполный

 Logs::whereHas('users', function($q) use ($shop_id) {
 $q->shop()->where('shop.id', $shop_id);
})->get();
  

Но не удается.

Спасибо, ребята

Комментарии:

1. Можете ли вы опубликовать свои модели? Кроме того, я предполагаю, что вы ознакомились с документацией Laravel, имеющей много сквозных связей?

2. Сделайте это наоборот: Shop::where(['id' => $shop_id])->with(['users', 'users.logs'])->first();

Ответ №1:

Попробуйте это

   $logs=Logs::whereHas('user',function ($query) use ($shopId) {
   $query->whereHas('shop',function ($query) use ($shopId) {
       $query->where('id',$shopId);
   });
  })->get();
  

Примечание: вы сказали, что любой журнал принадлежит пользователю, в этом случае вы должны вызвать

Log::whereHas(‘пользователь’)

вместо

Log::whereHas(‘пользователи’)