###1、設定預設欄位
資料入庫時一般都需要建立時間和修改時間,不想每次都在業務中填寫,怎麼辦?建立一個BaseModel,BaseModel繼承Eloquent/Model,自定義create_at、update_at欄位,其他Model繼承BaseModel即可
use Illuminate\Database\Eloquent\Model;
class BaseModel extends Model
{
const CREATED_AT = 'create_time';
const UPDATED_AT = 'modify_time';
}
###2、不需要記錄修改時間怎麼設定
最近做日誌業務,只需要 created_at 欄位就可以了,資料庫不想新增 updated_at 欄位。下面是解決方法:
解決方法
檢視 Illuminate\Database\Eloquent\Model 後發現,有這樣一行程式碼 use Concerns\HasTimestamps ,接下找到 trait HasTimestamps 看到 如下程式碼:
protected function updateTimestamps()
{
$time = $this->freshTimestamp();
if (! is_null(static::UPDATED_AT) && ! $this->isDirty(static::UPDATED_AT)) {
$this->setUpdatedAt($time);
}
if (! $this->exists && ! $this->isDirty(static::CREATED_AT)) {
$this->setCreatedAt($time);
}
}
/**
* Set the value of the "updated at" attribute.
*
* @param mixed $value
* @return $this
*/
public function setUpdatedAt($value)
{
$this->{static::UPDATED_AT} = $value;
return $this;
}
原始碼邏輯很簡單,直接在對應的Model 中設定 const UPDATED_AT = null 就可以了。
本作品採用《CC 協議》,轉載必須註明作者和本文連結