laravel and lumen 軟刪除操作
阿新 • • 發佈:2017-12-31
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 軟刪除操作