Laravel Soft Delete Не работает в сводной таблице

Я использую Laravel 5.2.

У меня есть 3 таблицы: book, user и book_user (сводная таблица).

Я хочу использовать мягкое удаление в своей сводной таблице. Когда я attach отдаю книгу пользователю, связь вставляется в book_user таблицу. Однако, когда я detach эту связь, запись в сводной таблице удаляется, даже если я добавил use SoftDeletes в модель сводной таблицы.

Как я могу реализовать мягкое удаление для записей в моей сводной таблице, когда я attach или detach?


person tapos ghosh    schedule 11.04.2016    source источник


Ответы (1)


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

Просто идея, может быть, вы можете использовать sync вместо detach вот так;

Перед этим вам нужно добавить столбец deleted_at в таблицу book_user как DATETIME вместо TIMESTAMP. Поскольку новая версия MYSQL не поддерживает тип NULL для TIMESTAMP.

Повторное удаление

$user->books()->sync(array(1 => array('deleted_at' => DB::raw('NOW()'))));

Получение

Также вы можете установить ограничение на Eager Load:

public function books()
{
    return $this
    ->hasMany('Book')
    ->whereNull('book_user.deleted_at');
}
person Goktug Gumus    schedule 11.04.2016