【发布时间】:2018-04-23 18:47:15
【问题描述】:
我:这是一个混合问题 | 访客:(wtf?)这是什么意思?
我在一个问题中提出 2 个问题(因为它是紧密耦合的)
使用:Laravel 5.5 & Mysql
1。 eloquent中如何删除相关模型?
我正在尝试删除具有以下关系的User
属于Address,
属于Package,
hasManyOrders,
hasManyComments
Orders 当User 或Product 被删除时级联
当User 或Post 被删除时COmments 级联。
现在如何删除User 并自动删除关联的orders 和comments?
当我尝试使用 $user->delete() 删除时,laravel 抛出异常:
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`cybertron`.`comments`, CONSTRAINT `comments_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)) (SQL: delete from `users` where `id` = 4)
所以我决定使用一个事务来删除、User、关联的订单和 cmets, 确保所有内容都被删除。
但我没有在 eloquent 中找到任何事务,而是在查询构建器 (DB) 中。
2。如果我使用数据库中的事务并使用 eloquent 删除用户 ($user->delete),这会被视为事务吗?
喜欢:
DB::transaction(function() {
$user->comments->delete();
$user->orders->delete();
$user->delete();
});
如果没有,我怎么能与 Eloquent 进行交易?
任何帮助将不胜感激
【问题讨论】:
标签: php laravel transactions eloquent laravel-5.5