Php 如何在URL-Laravel中将ID更改为产品名称

Php 如何在URL-Laravel中将ID更改为产品名称,php,laravel,routes,Php,Laravel,Routes,如何在URL中用实际产品名称替换ID。例如,而不是: www.myapp.com/product/421156 或一般(从路由文件) 到 当然,421156是索尼PS4的ID。您应该使用Slug。例如,您可以使用以下内容构建URL: {{ route('route-name', 'sony-playstation-4') }} 然后按slug搜索数据,而不是使用ID: public function show($slug) { Product::where('slug', $slug

如何在URL中用实际产品名称替换ID。例如,而不是:

www.myapp.com/product/421156
或一般(从路由文件)


当然,421156是索尼PS4的ID。

您应该使用Slug。例如,您可以使用以下内容构建URL:

{{ route('route-name', 'sony-playstation-4') }}
然后按slug搜索数据,而不是使用ID:

public function show($slug)
{
    Product::where('slug', $slug)->first();

要从产品名称生成slug,可以使用helper或多个软件包中的一个。

如果点击
www.myapp.com/product/sony-playstation-4
,会发生什么情况?您必须修改的是如何操作
{productID}
。它可以是整数或字符串。如果您将其发送到控制器和特定函数,您可以使用该slug/title
{productID}
获得帖子,如果您自定义路由密钥,您甚至不需要使用
::where
手动查找slug。请参阅(自定义密钥名称部分),但我有大约100万个产品。我无法为它们中的每一个定义路由名称:/。我想如果有办法用产品名称代替ID@harunB10您只需要为所有产品定义一个路由。@AlexeyMezenin我在哪里定义这个
{{route('route-name','sony-playstation-4')}
routes/web.php。。。它是否等同于路由::get()?不,它不是
route()
helper只是基于路由名称创建URL。您应该在
web.php
routes文件中定义路由。
{{ route('route-name', 'sony-playstation-4') }}
public function show($slug)
{
    Product::where('slug', $slug)->first();