#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(‘пользователи’)