laravel and lumen 软删除操作

Posted jingying

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel and lumen 软删除操作相关的知识,希望对你有一定的参考价值。

知识都是有联系的,这绝对是真理。作为一名小白,看了一点官方文档,把我自己理解的软删除操作给大家讲讲。有些就是套用官方文档的话。

定义:什么是软删除呢,所谓软删除指的是数据表记录并未真的从数据库删除,而是将表记录的标识状态标记为软删除,这样在查询的时候就可以加以过滤,让对应表记录看上去是被”删除“了。

通俗易懂说法:数据库的表中使用了一个日期字段作为标识状态,这个日期字段可以自定义,这里我们使用deleted_at,如果对应模型被软删除,则该条记录的deleted_at字段的值为删除时间,否则该值为空。

开始操作:

我选择使用laravel 做示例,因为lumen的artisan命令太少。主要是原理!!!

添加model文件,并创建blog_users表.

运行如下命令:

php artisan make:model blogUser --migration

  技术分享图片

 现在,已经生成了model文件,还有迁移文件。

我们用命令生成数据表,如下:

 php artisan migrate

   技术分享图片

现在还差一个字段,就是deleted_at字段。继续命令,

php artisan make:migration alter_posts_deleted_at --table=blog_users

技术分享图片

 然后编辑生成的PHP文件如下:

<?php

use Illuminate\\Support\\Facades\\Schema;
use Illuminate\\Database\\Schema\\Blueprint;
use Illuminate\\Database\\Migrations\\Migration;

class AlterPostsDeletedAt extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table(‘blog_users‘, function (Blueprint $table) {
            //我新加部分如下一行
            $table->softDeletes();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table(‘blog_users‘, function (Blueprint $table) {
            //
        });
    }
}

记得在migrations 文件夹中,把生成表的那个文件删掉,在继续执行如下命令,

php artisan migrate

  技术分享图片

你看deleted_at字段出来了吧。

好了,我要写代码了,不命令行了,哈哈哈。

在blogUser文件中,引用软删除,并配置。
<?php

namespace App;

use Illuminate\\Database\\Eloquent\\Model;
use Illuminate\\Database\\Eloquent\\SoftDeletes;

class blogUser extends Model
{
    //使用软删除
    use SoftDeletes;
    //设置表名
    public $table = ‘blog_users‘;
    //设置主键
    public $primaryKey = ‘id‘;
protected $dates = [‘deleted_at‘]; }

 现在,我们去控制器中吧,看看软删除好了没。 

<?php

namespace App\\Http\\Controllers;
use App\\blogUser;

class BlogUsedController extends Controller
{
    public function softdel(){
        $post = blogUser::find(1);
        $post->delete();
        if($post->trashed()){
            echo ‘软删除成功!‘;
            dd($post);
        }else{
            echo ‘软删除失败!‘;
        }
    }
}

  执行结果:

技术分享图片

lumen 也是这个原理,到时候,你数据表就手动创建,别用命令生成。model代码与控制器代码是主要的。

结束了,大功告成,如有不理解地方,请评论留言。

 


以上是关于laravel and lumen 软删除操作的主要内容,如果未能解决你的问题,请参考以下文章

lumen可以使用laravel-ide-helper

Laravel 或 Lumen JWT 删除默认声明

Laravel 4 级联软删除

laravel如何使用软删除

如何在laravel背包中启用软删除

Laravel5.1 模型 --软删除