如何确保我在Laravel中保存时将deleted_at字段设置为NULL?

时间:2014-10-23 12:48:55

标签: php laravel laravel-5

使用SoftDeletingTrait保存我的对象时,我的数据库字段' deleted_at'总是被设置为00:00:00'而不是NULL值。我使用的是最新的Laravel 5.0版本。

我的对象:

use Illuminate\Database\Eloquent\Model as Eloquent;
use Illuminate\Database\Eloquent\SoftDeletingTrait;


class Entity extends Eloquent{

    use SoftDeletingTrait;

    protected $fillable = array('title');

}

我的保存电话:

public function store(Request $request)
{
    $entity = new Entity;
    try{
        $data = ['title' => 'Test'];
        $entity->fill($data);
        $entity->save();
    } catch(\Exception $e) {
        echo $e->getMessage();
    }
}

' deleted_at'数据库中的字段DOES允许NULL值,因此不是问题。查询模型时,它不会检索记录,因为该字段不为空。我怎么能改变这个?

3 个答案:

答案 0 :(得分:2)

默认值可能不正确。您的Schema中设置了适当的软删除功能列,如下所示:

$table->softDeletes();

答案 1 :(得分:1)

如果您想利用Carbon日期功能,还应手动将deleted_at列添加到日期属性中:

class Entity extends Eloquent {
    use SoftDeletingTrait;
    // add this line:
    protected $dates = ['deleted_at'];
    //
    protected $fillable = array('title');
}

(Laravel的4.1-> 4.2升级文档声明您必须这样做,但显然不需要软删除功能。)

答案 2 :(得分:-1)

你有2个方法:

在数据库中将deleted_at专门设置为null(作为默认值) - > RECOMANDED

或者您可以执行$data = ['title' => 'Test', 'deleted_at' => NULL];

之类的操作