自訂隱晦路由器參數查詢

Eloquent Model 操作

在絕大部分的情境下,在寫路由查詢時,大概是這樣子:(這邊直接在路由做操作方便說明,原則上必須用 Controller)

看起來不錯,以前確實是這樣做的。

但在 Laravel 5.2 之後有提供隱晦的路由模型綁定[官網],先前的版本你必須先在 RouteServiceProvider::boot 時對路由參數綁定到模型:

接著才可以這樣做:

5.2之後提供的隱晦路由模型綁定相當好用,例如我需要得到 post id 為 1 的內容,僅需要這樣子:

但問題是,這樣子的操作方式預設情境是透過 id 的方式做查找,但今天也許我們是需要透過 subject 來做查找文章這樣子的動作,可以透過修改 Model 的 getRouteKeyName 來處理這樣子的情況:

查找一下抽象 Model 可以看到這個:

可以看到他預設是取得 primary key,接著我們在 Post.php 覆寫這個方法:

注意這邊的 key 是對應 table 的欄位名稱。

接著再度拜訪應用程式,可以看到他已經是透過 subject 來取得資料了。

相當方便的一個特性,可以多加利用。

Show your support

Clapping shows how much you appreciated Yish’s story.