Могу ли я изменить логику разрешения для Route-Model-Binding, чтобы строчные клавиши всегда были строчными? - PullRequest
0 голосов
/ 10 октября 2018

Я использую ключи UUID в проекте Laravel 5.7, и он работает очень хорошо.

При запросе элемента из базы данных по маршруту ключ ищется и сравнивается как строка.Когда запрос отправляет строку uuid в верхнем регистре, привязка модели маршрута не найдет модель, хотя строки UUID в Laravel являются строчными.

Есть ли способ убедиться, что ключ в нижнем регистре перед выполнением запроса поиска?

В документации объясняется, что я могу настроить логику разрешения следующим образом:

Route::bind('user', function ($value) {
    return App\User::where('name', $value)->first() ?? abort(404);
});

, однако это бесполезно, так как это относится только к определенным групповым символам (здесь «пользователь»), но мне нужноэто применимо к каждой привязке, и тогда класс, конечно, будет динамическим.

Есть ли способ настроить это поведение или кто-то может указать мне код, где Laravel выполняет динамическое разрешение?

Я не хочу отступать от того, чтобы просто взять идентификатор из URL-адреса, а затем найти себя на каждом маршруте.Я действительно хочу изменить поведение для всех привязок модели маршрута.

1 Ответ

0 голосов
/ 10 октября 2018

Переопределить resolveRouteBinding() в вашей модели:

public function resolveRouteBinding($value)
{
    return $this->where($this->getRouteKeyName(), strtolower($value))->first();
}
...