四種Laravel ORM開啟created_at的方法

下面由laravel框架教程欄目給大家介紹laravel orm只開啟created_at的幾種方法,希望對需要的朋友有所幫助!

方法一:

class?User?extends?Model?{ ??public?$timestamps?=?false;//關(guān)閉自動維護 ??public?static?function?boot()?{ ????parent::boot(); ????#只添加created_at不添加updated_at ????static::creating(function?($model)?{ ??????$model->created_at?=?$model->freshTimestamp(); ??????//$model->updated_at?=?$model->freshTimeStamp(); ????}); ??} }

此處有坑:使用create方法創(chuàng)建一條記錄時返回值的created的值是這樣的:

“created_at”:?{ “date”:?“2020-09-27?13:47:12.000000”, “timezone_type”:?3, “timezone”:?“Asia/Shanghai” },

并不是想象中的

“created_at”:?“2020-09-27?13:49:39”,

方法二:

class?User?extends?Model?{ ??const?UPDATED_AT?=?null;//設(shè)置update_at為null ??//const?CREATED_AT?=?null; }

此處有坑:使用destroy刪除會報錯

Missing?argument?2?for?IlluminateDatabaseEloquentModel::setAttribute()

使用delete不影響,wherein也不影響

方法三:

class?User?extends?Model?{ ??//重寫setUpdatedAt方法 ??public?function?setUpdatedAt($value)?{ ????//?Do?nothing. ??} ??//public?function?setCreatedAt($value) ??//{ ????//?Do?nothing. ??//} }

方法四:

class?User?extends?Model?{ ??//重寫setUpdatedAt方法 ??public?function?setUpdatedAtAttribute($value)?{ ????//?Do?nothing. ??} ??//public?function?setCreatedAtAttribute($value) ??//{ ????//?Do?nothing. ??//} }

在Migration中也可以設(shè)置(具體沒試過,在別的文章里看見的)

class?CreatePostsTable?extends?Migration?{ ??public?function?up()?{ ???Schema::create('posts',?function(Blueprint?$table)?{ ???$table->timestamp('created_at') ???->default(DB::raw('CURRENT_TIMESTAMP')); ??}); }

相關(guān)推薦:最新的五個Laravel視頻教程

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊15 分享