Laravel 5.4 - Skip Model Mutator

时间:2017-06-09 00:37:49

标签: php laravel

我有一个模型mutator,它在一个slug的末尾添加一个随机字符串。

public function setSlugAttribute($slug) {

  $slugNumber = mt_rand(100000, 999999);
  $this->attributes['slug'] = $slug."-".$slugNumber;
}

我只需要在第一次创建模型时发生这种情况,而不是在模型更新时发生。当模型已经存在并且slug已经很好时,我怎么能跳过mutator呢?

2 个答案:

答案 0 :(得分:0)

删除你的slug mutator并使用creating事件在创建之前改变slug。 E.g。

class MyModel extends Model
{
    public function boot()
    {
        parent::boot();

        static::creating(function ($model) {
            $random = mt_rand(100000, 999999);
            $model->slug = $model->slug . '-' . $random;
        });
    }
}

答案 1 :(得分:0)

this Delete your slug mutator and use the creating 
public static function boot()
    {
        parent::boot();
        Posts::saving(function(Posts $model){
            $random = mt_rand(10000, 99999);
            $model->slug = str_slug($model->title). '-'. $random;
        });
    }