Как удалить связи таблиц laravel

260
13 апреля 2018, 15:49

Здравствуйте, подскажите как я могу удалить связи между таблицами? То есть происходит удаления модели

$user = new User();
$user->delete();

И сразу же мне надо чтобы удалялись все ранее связи, то есть к примеру комментарии (у меня комментарии привязаны 1 ко многим к пользователю), а то получается так, что удаляю, и сразу выскакивает ошибка, что есть связь между ними, и удалить нельзя в итоге
Заранее спасибо за помощь

Answer 1

Вариант 1, используя модели и связи

Ты не указал связи таблиц пользователя и других, буду считать что у тебя есть 2 таблицы:

  1. User - Модель пользователей
  2. Comments - модель комментариев

Первое, тебе нужно сделать выборку конкретного пользователя

$user = User::find($id);

Второе: В моделях у тебя должны быть выстроены связи таблиц (relations)

// Удаление комментариев у пользователя
$user->comments()->delete();

И в заключении удаляешь самого пользователя

$user->delete();

Вариант 2, используя стандартные связки foreign keys в БД

Для этого, тебе необходимо установить связку foreign keys при миграции, которая будет на уровне БД следить за целостностью данных.
Вот пример:

$table->foreign('user_id')
    ->references('id')
    ->on('comments')
    ->onDelete('cascade');

Такая связка автоматически будет удалять все комментарии у пользователя, в случае удаления его из таблицы БД

Вариант 3, использовать ивенты в моделях (laravel)

https://laravel.com/docs/5.6/eloquent#events

READ ALSO
Редирект страницы с кодом 40x

Редирект страницы с кодом 40x

Скорее всего не знаю спецификацию, или суть происходящегоРешил сделать редирект с кодом 404:

258
Как правильно настроить в PHP Storm и Laravel autocomplete ?

Как правильно настроить в PHP Storm и Laravel autocomplete ?

Подскажите как настроить нормально для ларавела пакетов среду разработки для autocompletion ?

336
Сложение вещественных чисел

Сложение вещественных чисел

В php складываю два вещественных числа длиной 7 знаков после запятой при выводе получаю что-то вроде 69Е-6, как вывести число нормально

219
Не отправляется новость

Не отправляется новость

Есть скрипт, не получается отправить имя и текст сообщения в базу данныхНе могу понять, почему так

215