我是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僅用於測試!) –