我注意到如果模型中沒有更改,模型將不會調用更新或更新的事件。我想它會比較getOriginal
和getDirty
。強制觸發更新+更新事件
但是,當我僅更新模型的關係時(例如,附加新類別),由於此操作位於更新的事件內部,因此永遠不會觸發它。
在這種特定情況下,類別在更新事件期間被丟棄,並且在更新事件期間附加新類別。但只有在模型中至少更改一個值時纔會觸發它。
我錯過了什麼嗎?
4.1中沒有發生這種情況,現在發生在4.2,作曲家今天更新了。
更新:
下面是我的產品型號的開機updating
和updated
事件:
public static function boot()
{
parent::boot();
static::updating(function($model)
{
$model->author_id = 1;//Auth::user()->id;
$history = new ProductHistory($model->getOriginal());
$model->history()->save($history);
$model->languages()->update(array(Product::$historyKey => $history->id));
$model->currencies()->update(array(Product::$historyKey => $history->id));
$model->paymentTypes()->update(array(Product::$historyKey => $history->id));
}
static::updated(function($model)
{
if(Input::has('languages')) $model->languages()->attach(Input::get('languages'));
if(Input::has('currencies')) $model->currencies()->attach(Input::get('currencies'));
if(Input::has('payment_types')) $model->paymentTypes()->attach(Input::get('payment_types'));
}
}
而且updating
事件在BaseModel
:
static::updating(function($model)
{
if(property_exists(get_class($model), 'rules'))
{
if(!$model->validate()) return false;
}
});
這在4.2中不再起作用,因爲更新和u當模型沒有變化時,忽略pdated事件。我的修復程序只能使用saving
和saved
事件,在這些事件中,我可以通過檢查是否更新或創建模型來確定是否存在getOriginal()
事件。
st你負責更新的代碼。 –
@ WereWolf-TheAlpha嗨,狼人先生,我已經更新了這個問題。 – user2094178