Здравствуйте, подскажите пожалуйста. У меня есть модель изображений, и в ней метод
public function tags(): BelongsToMany
{
return $this->belongsToMany(Tag::class);
}
У изображения может быть много тегов, у тега может быть много изображений.
И сейчас вот немного не понимаю как мне составить запрос, мне нужно вывести изображения по выбранному тегу.
Я сначала сделал такое, но это не срабатывает как ожидается.
В $request->tags - массив id выбранных тегов
$images = $user->images()->with(['tags' => function($query) use ($request) {
if($request->has('tags')) {
$query->whereIn('tags.id', $request->tags);
}
}])->orderBy('id', 'desc')->paginate(15);
А вот так работает:
if($request->has('tags')) {
$images = $user->images()->whereHas('tags', function (Builder $query) use ($request) {
$query->whereIn('tags.id', $request->tags);
})->orderBy('id', 'desc')->paginate(15);
}
else {
$images = $user->images()->orderBy('id', 'desc')->paginate(15);
}
Но я вот думаю может можно как то по другому ещё сделать, подскажите пожалуйста, заранее благодарю за ответ.