如何在laravel mongodb上添加软删除? (Laravel 5.3)

时间:2017-03-12 20:51:26

标签: php mongodb laravel laravel-5.3

我从这里得到参考:https://github.com/jenssegers/laravel-mongodb#examples

我的模型是这样的:

<?php
namespace App\Models;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent; 
use Jenssegers\Mongodb\Eloquent\HybridRelations;
use Jenssegers\Mongodb\Eloquent\SoftDeletes;
class Message extends Eloquent
{
    use HybridRelations; 
    use SoftDeletes; 
    protected $connection = 'mongodb';
    protected $dates = ['deleted_at'];
    protected  $fillable = ['subject', 'information', 'created_at', 'update_at'];
}

我要插入的代码是这样的:

Message::create([
    'subject'       => $subject,
    'information'   => $information,
    'created_at'    => Carbon::now(),
    'updated_at'    => Carbon::now(),
    'deleted_at'    => null
]);

我尝试运行代码,它成功插入表,但我找不到deleted_at字段

如何在laravel mongodb上实现softdelete?

1 个答案:

答案 0 :(得分:0)

使用jenssegers / laravel-mongodb并插入对象(文档)时,不会创建deteted_at字段。在对象上执行delete()时,将使用当前日期时间创建并设置该日期。保存对象时,不必分配null值。默认情况下,如果先前执行过deleted_at方法,该库将检索未设置字段null或具有restore()值的文档。

请不要忘记在模型的定义中使用use Jenssegers\Mongodb\Eloquent\SoftDeletes;,否则,SoftDelete将不起作用,并且将始终返回所有记录。