2013-09-29 3 views
0

저는 처음 Laravel 4 프로젝트를 작성하고 웅변적인 ORM을 사용하여 경로를 사용하여 데이터베이스에서 행을 검색합니다. 예 : 이것은 지금 그것은 단지 사이트 작동 site.com/marvel/amazing-spider-man공백을 URL의 대시 (-)로 바꾸십시오.

같은 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); 
}); 

: 여기

는 경로입니다. co.kr/marvel/amazing spider-man 또는 site.com/marvel/amazing%20spider-man

'-'URL 만 사용하려면 어떻게해야합니까? 내가해야 할 일은 다음과 같습니다.

a. 라우팅 중에 '-'를 % 20으로 대체하는 코드를 작성하십시오. b. url을 생성하는 동안 % 20을 '-'로 대체하는 코드를 작성하십시오.

또 다른 고려 사항은 두 URL 모두에서 내 내용에 액세스 할 수 있기를 원하지 않는다는 것입니다.

답변

2

"시리즈"이름이 데이터베이스에 저장된 형식 때문에 예상 결과를 얻지 못하는 이유는 정확하게 일치하는 것을 기억하고 있으므로 검색하려는 경우 에 대한 결과 : (-), 경우에 당신이이 형식을 한 후 마음에 들지

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

당신은 대시를 제거하는 추가 단계를 피하기 위해 "놀라운 거미 남자"로 데이터베이스에 저장해야합니다 할 수 있습니다 :

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

대시가 제거되지만 대시가 사용되지 않도록주의하십시오. 그들이 제거 될 것이기 때문에 이름에서, 그리고 지금 당신은 "놀라운 스파이더 맨"으로 데이터베이스에 시리즈 이름을 저장할 수 있습니다.

+0

이것은 좋은 생각이다. 문제는 데이터베이스에 두 가지 유형의 제목이 있고 일부는 사실 형식적으로 대시가 붙어 있고 일부는 그렇지 않다는 것입니다. 데이터베이스에는 약 20 만 개의 행이 포함되어 있으며 전체 작업을 다시 수행하는 데는 많은 어려움이 따릅니다. 또 다른 해결책은 Sitecom/marvel/3/amazing-spider-man과 같은 URL에서 일종의 ID를 활용하는 것이고 id는 데이터베이스에만 매핑됩니까? – TerryG

관련 문제