当我创建帖子的时候,我也为它们创建了slu,但是slug在某种程度上可能与另一个相同,所以标题是独一无二的。例如,如果标题是
new title
比某人可以创建的new-title
实际上是不同的,但是当空间是短划线而不是相同时。在这种情况下,我想将它的id添加到它,这是我尝试的:
$articleslug = new Slugify();
$slug = $articleslug->slugify($request['title']);
$atyicles = Article::where('slug', $slug)->exists();
if ($atyicles) {
$lastId = Article::orderBy('id', 'desc')->first();
$getId = $lastId->id + 1;
$slug = $slug.$getId;
}
$article->slug = $slug;
但是如果在创建帖子之前删除了帖子,那么id就不正确了。那么有没有办法知道将要创建的帖子的ID?
答案 0 :(得分:2)
您可以在Article
型号
protected static function boot()
{
parent::boot();
static::created(function (Article $article) {
$articleBySlug = Article::where('slug', $article->slug)->exists();
if ($articleBySlug) {
$article->slug = $article->slug.'-'.$article->id;
$article->save();
}
});
}
因此,在创建新文章后,您检查slug是否已被使用,然后将文章的id
附加到slug
以使其唯一。