[Laravel 8.x] Model wasRecentlyCreated 判斷是否是 create

大家都知道 Laravel model 有一些預設的事件,如果我們觸發了 saved 事件,處理的過程中又想區分是新增還是編輯的時候就可以用 wasRecentlyCreated 屬性來判斷。
/**
 * The "booted" method of the model.
 *
 * @return void
 */
protected static function booted()
{
    static::saved(function ($user) {
        if ($this->wasRecentlyCreated) {
            // 如果是新增要做的事
        } else {
        	 // 如果是編輯要做的事
        }
    });
}
wasRecentlyCreated 不只在 saved 中可以使用,如果我們呼叫了 firstOrCreate 也可以用來判斷是否是新增的資料,例如:
$sampleModel = SampleModel::firstOrCreate($sampleData);
if ($sampleModel->wasRecentlyCreated) {
    // 新增要做的事情
} else {
    // 查詢要做的事情
}
沒想到 wasRecentlyCreated 這麼好用,簡直相見恨晚。

留言