В Laravel для полиморфных отношений многие ко многим (`MorphToMany`) действительно нет прямого аналогичного метода для `whereHasMorph`, как в случае с `MorphTo`. Однако вы можете использовать методы `whereHas` и `with` в сочетании с полиморфной связью, чтобы достичь желаемого результата.
Предположим, что у вас есть модели `Post` и `Tag`, где `Post` может иметь множество тегов, а `Tag` может принадлежать множеству постов. Чтобы получить теги для активных записей, вы можете использовать следующий подход:
### Пример реализации
1. **Определите связь в ваших моделях.**
В модели `Post`:
```php
class Post extends Model
{
public function tags()
{
return $this->morphToMany(Tag::class, 'taggable');
}
}
```
В модели `Tag`:
```php
class Tag extends Model
{
public function posts()
{
return $this->morphedByMany(Post::class, 'taggable');
}
}
```
2. **Запрос с условием.**
Теперь, чтобы получить теги только для активных постов, вы можете сделать запрос следующим образом:
```php
$activeTags = Tag::whereHas('posts', function ($query) {
$query->where('active', true); // Предположим, что у вас есть колонка active
})->get();
```
В этом запросе `whereHas` используется для фильтрации тегов, только если они связаны с активными записями `Post`.
Если вам нужны теги для определённого поста, вы можете воспользоваться:
```php
$postId = 1; // ID нужного поста
$tags = Post::find($postId)->tags;
```
### Вывод
Таким образом, хотя прямого метода `whereHasMorph` для полиморфной связи многие ко многим нет, вы можете легко фильтровать записи с помощью `whereHas` и настроить свои отношения в моделях.