Неявна прив'язка за замовчуванням шукає модель за первинним ключем. Є кілька рівнів налаштування - від простого до повного контролю.
Інша колонка для одного маршруту:
Route::get('/posts/{post:slug}', [PostController::class, 'show']);
Інша колонка для моделі завжди:
public function getRouteKeyName(): string
{
return 'slug';
}
Власна логіка - наприклад, лише опубліковані пости для гостей:
public function resolveRouteBinding($value, $field = null): ?Model
{
return $this->where($field ?? $this->getRouteKeyName(), $value)
->when(! auth()->user()?->isEditor(), fn ($q) => $q->published())
->first();
}
null дає 404.
Явна прив'язка в провайдері - коли параметр не відповідає моделі напряму:
Route::bind('user', fn (string $value) => User::where('name', $value)->firstOrFail());
Поряд корисне:
->withTrashed()на маршруті - знаходити м'яко видалені моделі;->missing(fn () => redirect(...))- що робити замість 404;scopeBindings()- вкладена модель шукається через батьківську, і чужий ID не пройде.
Важливо: прив'язка моделі - це пошук, а не авторизація. Перевірку прав робить політика.