mg_abr
@mg_abr

Как сохранить multiple поле со связью в Laravel?

Есть две модели (Пост и Тег). Связь hasMany от Поста к Тегу, обратная связь от Тега к Посту не нужна. Пост может иметь несколько тегов.

Как сохранить множественное значение тегов (в случае у формы select значения multiple)? Единичное значение сохраняется, все нормально. Но как сделать, чтобы сохранялось несколько тегов?

Модель (Пост):
public function tags()
{
    return $this->hasMany('App\Models\Tag', 'id', 'tag_id');
}

Контроллер Поста:
public function store()
{
    ...
    $posts->tag_id = $data['tag_id'];
    ...
}

Блейд (форма создания Поста):
<select name="tag_id">
    @foreach($tags as $tag)
        <option value="{{ $tag->id }}">{{ $tag->title }}</option>
    @endforeach
</select>
  • Вопрос задан
  • 210 просмотров
Пригласить эксперта
Ответы на вопрос 2
pLavrenov
@pLavrenov
Разработка сайтов
laravel.com (ссылка на ответ)

Всем всегда советую прочитать хотя бы один раз всю документацию чтобы представлять что там есть, а чего нет, и ориентироваться где искать.

А вообще из кода я понял что надо не "чтобы сохранялись теги" а что бы "к посту добавлялись теги" но это тоже есть в документации по той же ссылке.
Ответ написан
Комментировать
@jazzus
Связь нужна ManyToMany т.к. посты могут иметь общие теги иначе в тегах нет смысла. Если планируется добавлять теги к разным моделям (к постам, проектам, вопросам) то полиморфную Там прямо пример с тегами.
Массово добавлять/синхронизировать через метод sync https://laravel.com/docs/8.x/eloquent-relationship...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы