Thông thường, khi chúng ta muốn lấy thông tin của một bài viết bất kì thì ta phải truyền vào id và sử dụng hàm find() để truy xuất dữ liệu. Tuy nhiên Laravel hỗ trợ chúng ta Implicit Route Model Binding để có thể truy xuất dữ liệu dễ dàng hơn
Trong Laravel, mặc định Implicit binding sẽ where theo khoá chính của table để lấy ra model tương ứng
use App\Models\Post;
Route::get('/posts/{post}', function (Post $post) {
return $post->title;
});
Code language: PHP (php)
Nếu dữ liệu không được tìm thấy, nó sẽ tự động trả về 404
Tuỳ biến tên khoá
Bạn có thể thay đổi bằng cách
use App\Models\Post;
Route::get('/posts/{post:slug}', function (Post $post) {
return $post;
});
Code language: PHP (php)
hoặc override lại phương thức getRouteKeyName()
/**
* Get the route key for the model.
*
* @return string
*/
public function getRouteKeyName()
{
return 'slug';
}
Code language: PHP (php)