Laravel 5.1 - 如何在static :: updates事件中获取关系的更新

时间:2016-04-01 12:59:56

标签: php laravel laravel-5.1

我正在尝试创建一个特征(对于模型),它会自动在“调整”表中写入对模型所做的所有更改。它会保存jsons之前和之后的变化。

这是到目前为止的代码(来自Laracasts):

trait LoggingTrait
{
    public static function boot()
    {
        parent::boot();

        static::updating(function($action){
            $action->adjustments()->create(
            [
                'user_id' => Auth::id(),
                'before' => json_encode(array_intersect_key($action->getOriginal(), $action->getDirty())),
                'after' => json_encode($action->getDirty())
            ]);
        });
    }

    public function adjustments()
    {
        return $this->morphMany(Adjustment::class, 'adjustable');
    }
}

这项工作非常有效,但它不会保存对相关模型的更改。

为了更清楚,这是我的行动模型:

class Action extends Model
{
    use LoggingTrait;

    public function actionTypes()
    {
        return $this->belongsToMany(ActionType::class);
    }

    public function users()
    {
        return $this->belongsToMany(User::class);
    }

    public function spreadingMaterial()
    {
        return $this->belongsTo(SpreadingMaterial::class);
    }
}

特征记录对实际Action模型所做的所有更改,但不关心对$ action-> users(),$ action-> spreadingMaterials()和$ action->所做的更改。 actionTypes()。我如何在static :: updating(...)事件中获得这些更改?

或者,如果不可能,那么关于如何解决这个问题的任何其他想法都非常受欢迎。

0 个答案:

没有答案