Я использую Laravel 5.2.
У меня есть 3 таблицы: book
, user
а также book_user
(сводная таблица).
Я хочу использовать мягкие удаления в моей сводной таблице. Когда я attach
книга для пользователя, отношения вставляются в book_user
Таблица. Однако когда я detach
В этом отношении запись в сводной таблице удаляется, хотя я добавил use SoftDeletes
к модели сводной таблицы.
Как я могу реализовать мягкие удаления для записей в моей сводной таблице, когда я attach
или же detach
?
Я не пробовал использовать мягкое удаление с сводной таблицей, но вы говорите, что это не работает.
Просто идея, может быть, вы можете использовать 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');
}
Других решений пока нет …