SarkariResultess QA Bank

Laravel Route Model Binding: Slug URL ke liye kaunsa code sahi hai?

Laravel Published 25 Sept 2026 0 Views Verified

Suppose aapke Laravel application me Post model hai aur aap numeric ID ke badle slug se post open karna chahte hain.

Route::get('/posts/{post}', [PostController::class, 'show']);

Requirement hai ki URL kuch is tarah work kare:

/posts/laravel-routing-guide

Post model me slug column available hai. Kaunsa implementation Laravel Route Model Binding ke liye appropriate hai?

Sarkari Result QA Bank
Editorially reviewed exam information

Answer & Explanation

6 Answers
Verified Correct Answer

A. getRouteKeyName() ko slug return karna

Correct approach:

public function getRouteKeyName()
{
    return 'slug';
}

Iske baad Laravel implicit route model binding me {post} parameter ko Post model ke slug column ke basis par resolve kar sakta hai.

Additional Explanation

Ye option correct hai kyunki Laravel model ka route key customize karke aap numeric primary key ke badle slug use kar sakte hain. Is case me request /posts/laravel-routing-guide hone par framework matching Post record ko slug ke basis par resolve kar sakta hai.

Is approach ka advantage ye hai ki controller ko manually Post::where('slug', ...)->firstOrFail() likhne ki zarurat nahi padti jab route model binding properly configured ho.

Verified

B. Route me {id} hi rakhna aur slug column ignore karna

Route::get('/posts/{id}', [PostController::class, 'show']);

Ye code route create karta hai, lekin slug based binding requirement ko solve nahi karta.

Additional Explanation

Agar application URL me slug use karna chahti hai, to sirf {id} parameter use karna requirement fulfill nahi karta. Isme model lookup normally primary key oriented hoga aur slug-specific route binding configure nahi hoti.

Verified

C. Controller me har jagah database table ka naam manually pass karna

public function show($slug)
{
    return DB::table('posts')
        ->where('slug', $slug)
        ->first();
}

Ye manually query kar sakta hai, lekin requirement me Laravel Route Model Binding ka intended model-based approach use nahi hua.

Additional Explanation

Manual query technically data retrieve kar sakti hai, lekin question specifically Route Model Binding ko target karta hai. Model binding ka benefit automatic model resolution, cleaner controller signatures aur not-found handling ke framework behavior me milta hai.

Verified

D. Blade file me slug ke basis par query chalana

{{ DB::table('posts')->where('slug', $slug)->first()->title }}
Additional Explanation

Database queries ko Blade presentation layer me rakhna separation of concerns ko weak karta hai. Route model binding ki responsibility route/controller boundary par honi chahiye.

Verified

E. Migration me slug column create kar dena hi sufficient hai

$table->string('slug')->unique();

Slug column banana useful hai, lekin sirf migration se route model binding automatically slug par switch nahi hoti.

Additional Explanation

Database schema me slug column hona aur Laravel route model binding ka key change karna alag concerns hain. Binding ko slug based banane ke liye model-level routing key behavior ya appropriate binding configuration bhi required hoti hai.

Verified

F. $fillable me slug add karna automatically route binding change karta hai

protected $fillable = ['title', 'slug'];

$fillable mass assignment ko control karta hai; route key selection ko nahi.

Additional Explanation

$fillable ka purpose mass assignment protection hai. Ye decide nahi karta ki URL parameter ke through Eloquent model ko kaunsi column se resolve kiya jayega. Dono concepts ko alag rakhna chahiye.