Я относительный новичок с Laravel (с использованием версии 5.2.3) и работал над учебниками по Laracasts, а затем выполнял немного своих собственных экспериментов.Поиск объекта по slug, а не по id
Я успешно создан маршрут, который извлекает элемент из таблицы по идентификатору, как показано ниже
Route::get('/wiseweasel/{id}', '[email protected]');
Для простоты, контроллер просто д.Д. статья
public function singleArticle($id)
{
$article = ww_articles::find($id);
dd($article);
}
Это работает абсолютно отлично - я нахожу eg/wiseweasel/2 и получаю содержимое записи с id2.
Итак, я тогда хотел использовать поле слизня из записи вместо id. Так как я знаю метод ID работал, я пытался просто модифицировать этот маршрут и контроллер (также пытался создать заново, и не работал) Так что теперь у меня есть:
Route::get('/wiseweasel/{slug}', '[email protected]');
и
public function singleArticle($slug)
{
$article = ww_articles::find($slug);
dd($article);
}
слизняк для второй записи - «secondarticle». Поэтому, посетив url/wiseweasel/secondarticle, я ожидаю увидеть ту же запись, что и раньше. Вместо этого я заканчиваю нулевым.
Еще более странно, используя исходный маршрут id (/ wiseweasel/2), все еще возвращает запись ... когда я удалил все следы этого из маршрутов и контроллера, поэтому я ожидал бы, что это сбой ...
Это заставляет меня задаться вопросом, может ли это быть какая-то странная проблема кеширования? Я попытался
PHP мастерового маршрут: четкий
в случае маршрут кэшируется. Я также попытался перезапустить Apache и MySql (я использую XAMMP для обоих).
По-прежнему не везет, хотя ... не уверен, что я неправильно понял, как что-то работает или что происходит ... так что, если у кого-то есть какие-то предложения относительно того, что я мог сделать неправильно или что-нибудь попробовать, я бы будьте очень благодарны! :)
Спасибо Marcin, что сработало отлично! Это имеет смысл, так как я полагаю, что laravel не знает, что означает $ id или $ slug или что-то в этом случае, поскольку это просто местозаполнитель для того, что подается через URL-адрес. Спасибо за ваше объяснение тоже :) Когда вы говорите, что слизень должен быть уникальным, было бы так, если бы я сначала выбрал категорию, а затем и слизню - предположительно, в этом случае слизь просто должна была быть уникальной в категория? (хотя это все равно будет проблемой, если когда-либо попытаться получить доступ без какой-либо категории, я думаю) –
Я имею в виду, что каждая категория должна иметь уникальный слизень.Если у 2 категорий будет одинаковый слиз, это будет проблемой, потому что вы не сможете определить, какую категорию вы хотите получить, просто пробивая. Поэтому при заполнении пули для новой категории вам нужно убедиться, что она уникальна. –
Хорошо, я понимаю, спасибо :) Они всегда должны быть уникальными в любом случае (общий «пуля» первой статьи была просто для тестирования!) –