【问题标题】:Laravel Soft Delete Not working in pivot tableLaravel 软删除在数据透视表中不起作用
【发布时间】:2017-05-28 13:36:44
【问题描述】:

我正在使用 Laravel 5.2。

我有 3 个表:bookuserbook_user(数据透视表)。

我想在我的数据透视表上使用软删除。当我将attach 一本书给用户时,该关系被插入到book_user 表中。但是,当我 detach 这种关系时,即使我将 use SoftDeletes 添加到数据透视表模型中,数据透视表中的记录也会被删除。

当我使用attachdetach 时,如何对数据透视表中的记录实施软删除?

【问题讨论】:

    标签: php laravel laravel-5 many-to-many soft-delete


    【解决方案1】:

    我没有尝试使用带有数据透视表的软删除,但你说它不起作用。

    只是一个想法,也许你可以像这样使用sync而不是detach

    在此之前,您需要将deleted_at 列添加到book_user 表中作为DATETIME 而不是TIMESTAMP。因为新版MYSQL不支持NULLTIMESTAMP类型。

    软删除

    $user->books()->sync(array(1 => array('deleted_at' => DB::raw('NOW()'))));
    

    获取

    您还可以对 Eager Load 施加约束:

    public function books()
    {
        return $this
        ->hasMany('Book')
        ->whereNull('book_user.deleted_at');
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      相关资源
      最近更新 更多