有没有办法找到要创建的帖子的ID

时间:2018-02-19 14:11:24

标签: php mysql laravel laravel-5.4

当我创建帖子的时候,我也为它们创建了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?

1 个答案:

答案 0 :(得分:2)

您可以在Article型号

中使用model event
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以使其唯一。