2013-09-29 52 views
0

我正在处理我的第一个Laravel 4项目,并使用雄辩的ORM从数据库中使用路径检索行。例如:用URL中的破折号( - )替换空格

这是一个路线:

Route::get('{publisher}/{series}', function($publisher, $series) 
{ 
$result = Comic::where('publisher', '=', $publisher) 
->where('series', '=', $series) 
->orderBy('issue', 'asc') 
->get(); 

return View::make('comic') 
->with('result', $result); 
}); 

这应该是目前它仅适用于现场媒合网址像site.com/marvel/amazing-spider-man

。 com /奇迹/惊人的蜘蛛侠 或 site.com/marvel/amazing%20spider-man

我怎样才能确保只使用' - '网址?我相信我需要做的是:

a。编写在路由 b中用%20替换' - '的代码。编写在代码生成过程中用' - '代替%20的代码

另一个考虑因素是我不希望我的内容在两个URL上都可访问。

回答

2

之所以我认为你没有得到你期望的结果,是因为“系列”名称存储在数据库中的格式,请记住它正在寻找完全匹配,所以如果你想检索对于结果:

http://www.site.com/marvel/amazing-spider-man 

您需要将其存储在数据库中的“神奇蜘蛛人”,以避免删除破折号的额外步骤( - ),如果你不喜欢这种格式,那么你可以这样做:

$series = str_replace('-', ' ', $series); 

这将删除破折号,但要小心不要使用破折号w因为它们会被删除,现在你可以将这个系列名称作为“神奇的蜘蛛侠”存储在数据库中。

+0

这是一个好主意。问题是数据库有两种类型的标题,其中一些实际上是用破折号正式命名的,有些则不是。数据库包含大约200,000行,重做整个事情总是很痛苦。 另一种解决方案是使用某种类型的URL,比如sitecom/marvel/3/amazing-spider-man,其中id只映射到数据库? – TerryG

相关问题