我是Laravel的相对初学者(使用5.2.3版本),并且一直在通过Laracasts上的教程,然后做了一些我自己的实验。通过slu Search而不是编号搜索对象
我成功地建立了由它的ID从表中获取的项目的路径,如下图所示
Route::get('/wiseweasel/{id}', '[email protected]');
为了简单起见,控制器只需DD的文章
public function singleArticle($id)
{
$article = ww_articles::find($id);
dd($article);
}
这工作绝对罚款 - 我访问eg/wiseweasel/2并获得id2记录的内容。
因此,我想从记录中使用slug字段而不是id。因为我知道ID方法的工作,我已经试过只修改这条路线和控制器(也尝试创建新生活,既不工作),所以我现在有:
Route::get('/wiseweasel/{slug}', '[email protected]');
和
public function singleArticle($slug)
{
$article = ww_articles::find($slug);
dd($article);
}
嵌塞第二条记录是“第二条”。所以,访问url/wiseweasel/secondarticle,我希望看到与以前dd'd相同的记录。相反,我最终得到null。
更奇怪的是,使用原始的id路由(/ wiseweasel/2)仍然返回记录......当我从路由和控制器中删除了所有这些痕迹时,所以我预计这会失败......
这让我怀疑这是否可能是一些奇怪的缓存问题?我试过
PHP工匠路线:明确
的情况下,路由是被缓存。我也尝试重新启动Apache和MySql(我正在使用XAMMP)。
尽管如此,我还是没有运气...不知道我是否误解了某些事情是如何工作或发生了什么...所以如果任何人有任何关于我可能做错了什么或任何尝试的建议,我会非常感谢! :)
感谢Marcin,这工作完美!这是有道理的,因为我猜laravel在这种情况下无法知道$ id或$ slug或任何方式,因为它只是通过url提供的任何东西的占位符。谢谢你的解释:) 当你说塞必须是独特的,如果我首先选择一个类别然后塞 - 这可能是在这种情况下塞必须是唯一的类别? (虽然这仍然是一个问题,如果试图访问没有我猜的类别) –
我的意思是每个类别应该有独特的slu。。如果两个类别有相同的slu it,这将是一个问题,因为你不能确定你想得到什么类别的slu。。所以当填充新类别的slu you时,你需要确保它是唯一的 –
好吧,我明白了,谢谢:)无论如何,它们应该始终是唯一的(通用的“第一篇”slu was仅用于测试!) –