Laravel 区分大小写不';在使用uppercas的服务器上,无法在sluggable中工作

Laravel 区分大小写不';在使用uppercas的服务器上,无法在sluggable中工作,laravel,case-sensitive,slug,Laravel,Case Sensitive,Slug,我正在使用拉威尔的软件包。当我用大写或小写存储相同的字母时,它不知道它们是相同的!例如,“myFlower”和“myFlower”分配不同的案例。如果有人有想法,我会很高兴的 class testController extends Model { use Sluggable; protected $fillable = [ 'name', 'slug', ]; public function sluggable() {

我正在使用拉威尔的软件包。当我用大写或小写存储相同的字母时,它不知道它们是相同的!例如,“myFlower”和“myFlower”分配不同的案例。如果有人有想法,我会很高兴的

class testController extends Model
{
    use Sluggable;

    protected $fillable = [
        'name', 'slug',
    ];

    public function sluggable()
    {
        return [
            'slug' => [
                'source' => 'name'
            ]
        ];
    }

    public function getRouteKeyName()
    {
        return 'slug';
    }
}

您可以尝试添加一个新的访问器并将其用作源,如下所示:

return preg_replace(array_keys($map), array_values($map), strtolower($string));
类testController扩展模型
{
使用可插入式;
受保护的$fillable=[
'名字','鼻涕虫',
];
公共功能()
{
返回[
“slug”=>[
'源'=>'小写字母的名称'
]
];
}
公共函数getRouteKeyName()
{
返回“slug”;
}
公共函数getLowercaseNameAttribute(){
返回strtolower($this->name);
}
}

\config\slaggable.php
文件中,有一个方法函数。函数的最后一行是:

return preg_replace(array_keys($map), array_values($map), $string);
$string
替换为
strtolower($string)
。这条线应该是这样的:

return preg_replace(array_keys($map), array_values($map), strtolower($string));
这将导致所有字母在用作slug之前都变为小写,因此两个字母大小写不同的相同单词将不会被视为两个不同的单词