我可以更改 Route-Model-Binding 的解析逻辑以始终小写字符串键吗?

2024-05-13

我在 Laravel 5.7 项目中使用 UUID 键,并且效果非常好。

当通过路由从数据库请求项目时,将查找键并将其作为字符串进行比较。当请求发送大写的 uuid 字符串时,路由模型绑定将找不到模型,因为 Laravel 的 UUID 字符串是小写的。

有没有办法确保在执行查找查询之前键是小写的?

文档解释说我可以像这样自定义解析逻辑:

Route::bind('user', function ($value) {
    return App\User::where('name', $value)->first() ?? abort(404);
});

然而这是无用的,因为它仅适用于特定的通配符(此处为“用户”),但我需要将其应用于每个绑定,并且该类当然也是动态的。

有没有办法自定义该行为,或者有人可以向我指出 Laravel 进行动态解析的代码吗?

我不想退回到只从 url 中获取标识符,然后在每个路由中查找自己。我真的想更改所有路由模型绑定的行为。


覆盖resolveRouteBinding()在您的模型中:

public function resolveRouteBinding($value)
{
    return $this->where($this->getRouteKeyName(), strtolower($value))->first();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以更改 Route-Model-Binding 的解析逻辑以始终小写字符串键吗? 的相关文章

随机推荐