首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除Laravel 5中的用户和用户创建的数据

删除Laravel 5中的用户和用户创建的数据
EN

Stack Overflow用户
提问于 2016-08-31 02:39:45
回答 1查看 830关注 0票数 0

我有一个网站,用户可以创建帖子和消息。我想让它,当用户删除他们的个人资料时,所有用户的帖子和消息也将被删除。我有一个users、messages和posts表。我在考虑做一些像这样的事情

代码语言:javascript
运行
复制
User::destroy(Auth->user()->id); //to delete user
Message::where(user_id, Auth->user())->delete(); //to delete al messages from that user
Post::where(user_id, Auth->user())->delete(); //to delete all posts from that user

这是最好的方法,还是有更优雅的选择?基本上,我是否需要在所有表中搜索该user_id,然后删除每一行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-31 02:43:01

为此,在迁移过程中,您需要使用onDelete方法设置外键约束。

这将存在于您的posts表中。

代码语言:javascript
运行
复制
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

这将存在于您的messages表中。

代码语言:javascript
运行
复制
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

查看对此的外键约束。https://laravel.com/docs/5.3/migrations#foreign-key-constraints

如果你因为某些原因不能修改你的迁移,另一个选择是使用触发器。

代码语言:javascript
运行
复制
protected static function boot() {
    parent::boot();

    static::deleting(function($user) { 
         $user->posts()->delete();
         $user->messages()->delete();
    });
}

当然,这需要在模型中设置关系。

参考:https://laravel.com/docs/5.3/eloquent#events

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39234854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档