首页 > 后端开发 > php教程 > Laravel Eloquent 删除模型时如何自动删除相关行?

Laravel Eloquent 删除模型时如何自动删除相关行?

Barbara Streisand
发布: 2024-12-14 11:05:10
原创
427 人浏览过

How Can I Automatically Delete Related Rows When Deleting a Model in Laravel Eloquent?

使用 Eloquent ORM 在 Laravel 中实现自动删除相关行

Eloquent ORM 的标准 delete() 方法删除单行。要扩展此功能并自动删除相关行,请利用 Eloquent 事件。

问题:
当您使用 $user->delete() 删除一行时,如何附加用于删除相关行的自动回调,例如$this->photo()->delete()?

解决方案:

删除事件在delete(之前触发) ) 方法被调用。通过在模型类中定义事件处理程序,您可以在删除时执行清理任务。

<?php

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    public function photos()
    {
        return $this->has_many('Photo');
    }
    
    // This method is called before delete() is called
    protected static function booted () {
        static::deleting(function (User $user) {
            $user->photos()->delete();
        });
    }
}
登录后复制

附加说明:

  • 使用 booted 方法建议声明事件处理程序。
  • 考虑将清理操作包装在事务中以保持引用诚信。

以上是Laravel Eloquent 删除模型时如何自动删除相关行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板