Laravel 8 限定范圍的資源路由

2021-07-16 18:01 更新

有時,在定義資源路由時隱式綁定了多個 Eloquent 模型,你希望限定第二個 Eloquent 模型必須為第一個 Eloquent 模型的子模型。例如,考慮這樣一個場景,通過 slug 檢索某個特殊用戶的一篇文章:

use App\Http\Controllers\PostsController;

Route::resource('users.posts', PostsController::class)->scoped();

你可以通過給 scoped 方法傳遞一個數(shù)組來覆蓋默認的模型路由鍵:

use App\Http\Controllers\PostsController;

Route::resource('users.posts', PostsController::class)->scoped([
    'post' => 'slug',
]); 

當使用一個自定義鍵的隱式綁定作為嵌套路由參數(shù)時,Laravel 會自動限定查詢范圍,按照約定的命名方式去父類中查找關聯(lián)方法,然后檢索到對應的嵌套模型。在這種情況下,將假定 User 模型有一個叫 posts(路由參數(shù)名的復數(shù))的關聯(lián)方法,通過這個方法可以檢索到 Post 模型。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號