Добрый день!
При дебаге, возвращается странная ошибка при удалении объекта.
_error": “ERROR #23503 update or delete on table "document" violates foreign key constraint "document_user_user_document_pivot_rel1_id_fkey" on table "document_user_user_document_pivot"”
В модели данных у этого объекта менял связи, все сохранил, вроде все обновилось. С другими объектами таким проблем нет, все работаем по этому же алгоритму.
Логика выполнения:
Скорее всего не может удалить, потому что есть связанные объекты зависящие от него. Когда у вас есть связь, сначала нужно удалить объекты ссылающиеся на документ, а потом сам документ.
Есть еще один вариант удаления - каскадное, но насколько помню мы его ен включали чтобы избежать кейсов когда разработчик удаляет данных больше чем хотел.
Скорее всего в других кейсах у вас связь не many-to-many, как в данном случае поэтому не создается отдельная вспомогательная pivot таблица с информацией о связи.
Ваша задача - предварительно удалить запись о данной связи. Для этого есть два варианта:
Перед удалением документа сделать его update, выставив null в поле User.
Сделать прямой запрос к SQL (блок SQL Exec) на удаление записей в pivot таблице. Что-то типа “DELETE from document_user_user_document_pivot WHERE rel2_id = id удаляемого документа”
Тост выводит количество прикрепленных пользователей, записанное в таблице. Оно не обязательно совпадает с данными в базе, это нужно логику смотреть, как в таблицу данные попадают.
Превращать системные блоки в эндпойнты и делать запросы прямо к ним - не очень хорошая идея. Лучше все-таки создать на беке БП для этого, который совершает комплексные действия.
В целом на беке Patch обнуляет данные в том в случае, если об этом прямо указано в поле nullify fields (и никакое значение не передано). В противном случае он оставляет их без изменений, так как часто из модели может передаваться буквально одно-два поля, чтобы изменить только их, а не трогать все остальные.
Честно говоря, сколько не пытался, делал апдейт на беке или на фронте, очищал поля, но так и не смог добиться результата. Потом понял, что связь многое ко многим избыточна, сделал 1 ко многим. Но в будущем у меня точно будет кейс где многое ко многим и вопрос пока не закрыт, позже к нему все равно вернуть.