Php 从名称创建唯一的slug,检查数据库现有slug

Php 从名称创建唯一的slug,检查数据库现有slug,php,laravel,eloquent,slug,Php,Laravel,Eloquent,Slug,我现在正在开发一个web应用程序,它从一个用户那里获取一个名字并从中生成一个slug。例如John Doe->John Doe slug需要是唯一的,因为它被用作标识符,所以我很抱歉,我目前正在做以下工作 `$slug=Str::slug($slug) ` 如果像john doe一样存在一个段塞,这将创建john-doe-1,问题是出现的下一个john doe也会尝试创建一个唯一的john-doe-1段塞,因为查询只查找精确匹配 有没有一种方法可以让我在数据库中搜索john doe+john d

我现在正在开发一个web应用程序,它从一个用户那里获取一个名字并从中生成一个slug。例如John Doe->John Doe

slug需要是唯一的,因为它被用作标识符,所以我很抱歉,我目前正在做以下工作

`$slug=Str::slug($slug)

`

如果像john doe一样存在一个段塞,这将创建john-doe-1,问题是出现的下一个john doe也会尝试创建一个唯一的john-doe-1段塞,因为查询只查找精确匹配

有没有一种方法可以让我在数据库中搜索john doe+john doe的所有事件-


通过这种方式,我知道要向slug添加什么数字以使其唯一

您可以使用
composer require spatie/laravel slaggable
包生成唯一slug

<?php

namespace App;

use Spatie\Sluggable\HasSlug;
use Spatie\Sluggable\SlugOptions;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use HasSlug;

    /**
     * Get the options for generating the slug.
     */
    public function getSlugOptions() : SlugOptions
    {
        return SlugOptions::create()
            ->generateSlugsFrom('name')
            ->saveSlugsTo('slug');
    }
}

您可以使用
composer require space/laravel sluggable
包生成唯一的slug

<?php

namespace App;

use Spatie\Sluggable\HasSlug;
use Spatie\Sluggable\SlugOptions;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use HasSlug;

    /**
     * Get the options for generating the slug.
     */
    public function getSlugOptions() : SlugOptions
    {
        return SlugOptions::create()
            ->generateSlugsFrom('name')
            ->saveSlugsTo('slug');
    }
}

从像“%john doe%”这样的slug用户中选择*
?您可以附加用户id。这将确保它是唯一的。检查这个。GitHub上已经有了一些很好的解决方案。在那里搜索“laravel slug”。
从像“%john doe%”这样的slug所在的用户中选择*
?您可以附加用户id。这将确保它是唯一的。检查这个。GitHub上已经有了一些很好的解决方案。在那里搜索“laravel slug”。是的,这是几个可以为您处理此问题的软件包之一(也是我个人最喜欢的;Spatial的东西总是经过深思熟虑和维护)。是的,这是几个可以为您处理此问题的软件包之一(也是我个人的最爱;空间的东西总是经过深思熟虑和维护的)。