当前位置: 首页 > 面试题库 >

自动删除Laravel(Eloquent ORM)中的相关行

程举
2023-03-14
问题内容

当我使用以下语法删除一行时:

$user->delete();

有没有一种方法可以附加各种回调,以便例如自动执行此操作:

$this->photo()->delete();

最好在模型类内部。


问题答案:

我相信这是Eloquent事件的完美。您可以使用“删除”事件进行清理:

class User extends Eloquent
{
    public function photos()
    {
        return $this->has_many('Photo');
    }

    // this is a recommended way to declare event handlers
    public static function boot() {
        parent::boot();

        static::deleting(function($user) { // before delete() method call this
             $user->photos()->delete();
             // do the rest of the cleanup...
        });
    }
}

您可能还应该将整个内容放入事务中,以确保引用完整性。



 类似资料:
  • 我试图删除相应的行。 Pasien表dam用户表 当我删除pasien表中的一行时,连接到users表的行也应该被删除。然而,这显示了一个让我感到困惑的错误,不管我是否错误地实现了belongsTo,并且在模型上有很多。 我曾尝试将其反转(belongsTo和hasMany),但仍然是一个错误。此问题的正确代码行是什么? 用户表 id 姓名 电子邮件 密码 帕西恩表 id iduser 状态 帕西

  • 问题内容: 我要删除具有多对多关系的一个站点上的表中的一行。我还想删除该关系另一侧的所有相关行。 例如,假设我有以下表格,并且想从中删除一行。我也想从中删除所有相关的行,当然,也删除其中不再需要的任何行。 我知道如何在查询中连接以上表格。但是我看不到如何删除整个关系中的数据。 注意:关系的两端都实现级联删除。因此,例如,从中删除行将删除中的任何相关行。但是显然,这不会传播到表中。 问题答案: 我认

  • 我正在windows环境下使用PHP7.2(与xampp一起安装)使用laravel 5.6。安装laravel后,“php artisan serve”命令将正常工作,但会自动删除server.php文件。

  • 问题内容: 我有一张桌子。为了快速升级/部署网站,我做了一个新表,其中包含一些新数据,方法是: 现在每个表都有一个PK列,看起来像: 重要的一点是,两个表都依赖于完全相同的序列。没有。就我的目的而言,这似乎还可以。 此后,我加载了新数据并重命名了表,以便将其作为实盘接管,而原始表变成了。现在我尝试删除: 足够公平,列默认值仍取决于顺序。 这是踢脚线。 因此,不再对序列具有任何可见的依赖关系,但是它

  • 我有以下型号: 当我运行下面的查询时,用户模型也被删除 有没有办法在不删除用户的情况下删除问题? 我试着重复这些问题但没有用 我认为查询集是懒惰的,所以也许我需要在删除之前评估它,所以我打印了它,但这不起作用。 我知道,将ForeignKey设置为null将为我提供诸如clear和remove之类的方法,但我不想这样做,因为我不希望出现任何孤立的用户问题。 我更新了ForeignKey,如下所示

  • 我有三张桌子 书籍:-id-姓名-已删除 帖子:-id-图书id-连接-删除地址 评论:-id-帖子id-评论-已删除 一本书有很多帖子,一篇帖子有很多评论。 当我删除一本书时,我想删除与该书相关的帖子和评论。我已经在所有模型中添加了关系,所有表都使用SoftDelete,并尝试在Laravel中使用事件 当我尝试删除一本书时: 书籍和帖子已删除,但评论不会被删除。我可以用Laravel事件删除评