gpt4 book ai didi

Laravel - 删除所有关系

转载 作者:行者123 更新时间:2023-12-02 21:28:54 25 4
gpt4 key购买 nike

我有一个系统,其中用户连接到许多不同的表,这些表也连接到不同的表。当我从数据库中删除用户时,与该用户关联的每个关系也应该被删除。我的项目的关系设置如下所示

- A User user has multiple orders.
- An Order has multiple order items.
- Order Items belong to an order.
- A webshop belongs to a user and a webshop has One Main Setting.
- Main settings belongs to a webshop and has One address.
- Address belongs to main setting

当 id 为 1 的用户被删除时。所有 user_id 等于 1 的订单也应该被删除,没有问题。但user_id为1的订单也有很多order_items。举例来说,这个特定订单的 id 为 3。所有 order_id 为 3 的 order_items 也应该被删除。这就是我遇到这个问题的地方。

我的尝试

这样做会导致用户被删除

$user = User::find($id);
$user->delete();

通过执行以下操作删除关系:

$user->orders()->delete();

但是如何删除与所有被删除的订单关联的订单项目呢?我的尝试是:

$user->orders()->orderitems()->delete();

但不幸的是,这不起作用。模型中的所有关系都工作得很好。所以所有可用的属性都是

User
- Orders();
- Webshops();
Order
- Orderitems();
Webshop
- Mainsetting();
Mainsetting
- Address();

如何才能实现上述目标?

最佳答案

如果您使用MySQL(或任何支持级联的RDBMS),您可以在数据库级别级联删除。如果没有,您必须在 Controller 上手动处理它或通过模型事件监听功能。请参阅documentation on migrations详细说明外键约束。

Schema::create('order_items', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('order_id');
$table->timestamps();

$table->foreign('sell_order_id')
->references('id')
->on('orders')
->onDelete('cascade');
});

Note: Laravel supports soft deletes out of the box, as well as cascading soft deletes, see following article https://laravel-news.com/cascading-soft-deletes-eloquent

关于Laravel - 删除所有关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50503464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com