@damarkuzz

Как создать связь модели к конкретным моделям?

Подскажите, у меня есть модель ContentTag (id, tag_code)

Также есть еще модель Content (id, content_tag_id, content)

Как реализовать связь у Content с другими моделями, чтобы потом по значениям этих связей вызывать нужный Content

Например, такой функцией:

getContent('text_1', ['Brand' => 1, 'Model' => 92), где text1 - это tag_code у ContentTag, а значения в массиве - айдишники моделей
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
delphinpro
@delphinpro Куратор тега Laravel
frontend developer
Что это за сущности - Content и ContentTag?

Теги реализуются связями M2M

Таблицы:
tags
id | text

contents
id | content | …

content_tag
tag_id | content_id

class Content extends Model {
  public function tags(): BelongsToMany {
    return $this->belongsToMany(Tag::class);
  }
}

class Tag extends Model {
  public function contents(): BelongsToMany {
    return $this->belongsToMany(Content::class);
  }
}

dd($content->tags);


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

PPS
Подробности в документации. https://laravel.com/docs/10.x/eloquent-relationships
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы