setSlug(); }); } /** * Set the slug attribute. * * @param string $value * @return void */ public function setSlug($value = null) { if (is_null($value)) { $value = $this->getAttribute($this->slugAttribute); } $this->attributes['slug'] = $this->generateSlug($value); } /** * Generate slug by the given value. * * @param string $value * @return string */ private function generateSlug($value) { $slug = str_slug($value) ?: slugify($value); $query = $this->where('slug', $slug)->withoutGlobalScope('active'); if (array_has(class_uses($this), SoftDeletes::class)) { $query->withTrashed(); } if ($query->exists()) { $slug .= '-' . str_random(8); } return $slug; } }