2017-06-09 52 views
0

我有一個模型增變器,它將一個隨機字符串添加到一個slug的末尾。Laravel 5.4 - Skip Model Mutator

public function setSlugAttribute($slug) { 

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

我只需要在模型創建時第一次發生這種情況,而不是在更新模型時。當模型已經存在並且slu is已經很好時,我怎樣才能跳過增變器?

回答

0

刪除你的slu mut突變體,並使用creating事件來改變slu before,然後再創建。例如。

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

     static::creating(function ($model) { 
      $random = mt_rand(100000, 999999); 
      $model->slug = $model->slug . '-' . $random; 
     }); 
    } 
} 
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; 
     }); 
    }