3

使用 SoftDeletingTrait 保存我的对象时,我的数据库字段“deleted_at”总是设置为“0000-00-00 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”字段允许 NULL 值,所以这不是问题。查询模型时,它不会检索记录,因为该字段不为空。我怎样才能改变这个?

4

3 回答 3

2

默认值可能不正确。软删除功能的适当列在您Schema这样设置:

$table->softDeletes();
于 2014-10-23T12:56:29.480 回答
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 升级文档声明您必须这样做,但显然不需要软删除功能。)

于 2014-10-23T13:02:35.993 回答
-2

你有两种方法可以做到这一点:

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

或者你可以做类似的事情$data = ['title' => 'Test', 'deleted_at' => NULL];

于 2014-10-23T12:50:44.387 回答