Задать вопрос
@Shurra

Как удалить неиспользуемые поля из промежуточной таблицы связей (belongsToMany) Laravel8?

при редактировании поста (удаление/добавление/выбор существующих тегов) использую updateOrInsert.
все отрабатывает кроме удаления. то есть допустим у поста 3 тега, и один удаляю, в промежуточной таблице связь остается. из основной таблицы тегов удалять нельзя(они привязаны к другим постам) надо чтобы только в промежуточной таблице отвязать(удалить связь)
запрос выглядит так - todo_tags_ids - промежуточная таб с двумя рабочими полями тодо_ид/таг_ид
DB::table('todo_tags_ids')
      ->updateOrInsert([
          'tag_id' => $id,
          'todo_id' => $todo->id
          ]);


64498b7ed0b2a436773344.png
на скрине выделеные поля (92) связи которые надо удалить атседа, только в этой табл.
Поправьте меня если неправильно - перед внесением изменений в таблицу, мне наверно надо выбрать все поля по todo_id - удалить, и потом уже инсерт..
подскажите как это надо сделать правильно? спасибо
  • Вопрос задан
  • 87 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@Shurra Автор вопроса
сделал, как и предполагал -
вначале удаляю все связи с текущим айди,
DB::table('todo_tags_ids')->where('todo_id', '=', $todo->id)->delete();

потом инсертю в чистую таблицу новые связи.

допускаю что динозавры могут этот запрос оптимизировать до одной строки.
к сожалению я пока не динозавр))

UPD:
решилось при помощи метода sync()
Спасибо @iMedved2009
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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