1. 程式人生 > >laravel and lumen 軟刪除操作

laravel and lumen 軟刪除操作

blue run 添加 文件 文件中 ever tis code ros

知識都是有聯系的,這絕對是真理。作為一名小白,看了一點官方文檔,把我自己理解的軟刪除操作給大家講講。有些就是套用官方文檔的話。

定義:什麽是軟刪除呢,所謂軟刪除指的是數據表記錄並未真的從數據庫刪除,而是將表記錄的標識狀態標記為軟刪除,這樣在查詢的時候就可以加以過濾,讓對應表記錄看上去是被”刪除“了。

通俗易懂說法:數據庫的表中使用了一個日期字段作為標識狀態,這個日期字段可以自定義,這裏我們使用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 軟刪除操作