laravel 5:软删除

时间:2015-12-01 08:26:11

标签: laravel laravel-4 laravel-5 eloquent

我在表格中添加了deleted_at,默认值为0000-00-00 00:00:00(必须在mysql中),现在使用User::first()无法在deleted_at = 0000-00-00 00:00:00时获取值。任何想法?

3 个答案:

答案 0 :(得分:4)

当您在模型上调用delete方法时,deleted_at列将设置为current date and time。并且,在查询使用model的{​​{1}}时,会自动从所有查询结果中排除软soft deletes模型

要使代码正常工作,请将deleted字段设置为deleted_at

要删除模型,您可以使用逻辑

null

参考http://laravel.com/docs/5.1/eloquent#soft-deleting

答案 1 :(得分:1)

您是如何添加该列的?

如果您在迁移中使用Laravels Schema,则会有一个softDeletes()列,默认为null(当然,您也可以直接在数据库中执行此操作)。

答案 2 :(得分:0)

您只能获取记录的值deleted_at = NULL,否则无法检索行。如果您想获得所需的行,只需设置deleted_at = NULL

即可

您应该像下面的代码一样使用softDelete,它会自动创建具有正确默认值的正确列。

Schema::table('table_name', function(Blueprint $table)
{
   $table->softDeletes();
});