Вот что я читаю.
Предположим, модель тегов:
class Tag {
public function books() {
$this->belongsToMany(Book::class);
}
public function places() {
$this->belongsToMany(Place::class);
}
}
Тогда, если вам нужно получить все книги, имеющие общий тег, с конкретным местом, вы можете сделать:
$tagsForPlace = Tag::whereHas("places", function ($query) { $query->where("id", $placeId; })->with("books")->get(); //$PlaceId is the id you are interested in.
Тогда вам нужны только книги:
$booksWithTagsForPlace = $tagsForPlace->map(function ($tag) {
return $tag->books;
})->unique("id"); //Unique to filter out duplicate books if any
Хотя я могу ошибаться в своем понимании вопроса.