【问题标题】:laravel 5: soft deletelaravel 5:软删除
【发布时间】:2016-03-05 02:28:11
【问题描述】:

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

【问题讨论】:

    标签: laravel laravel-4 laravel-5 eloquent


    【解决方案1】:

    你是如何添加列的?

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

    【讨论】:

    • 谢谢,我认为时间戳必须设置为 0 作为 mysql 中的默认值。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      当您在模型上调用删除方法时,deleted_at 列将设置为current date and time。而且,当查询使用soft deletesmodel 时,deleted 模型将自动从所有查询结果中排除

      使您的代码工作集deleted_at 字段为null

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

      $deletedRows = App\Flight::where('active', 0)->delete();
      

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

      【讨论】:

        猜你喜欢
        • 2015-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多