Laravel маршрутизация показывает только один идентификатор в URL, даже если этот идентификатор не существует в таблице - PullRequest
1 голос
/ 18 января 2020

В моей боковой панели у меня есть список городов по умолчанию. Когда я нажимаю на каждый город, я получаю некоторые данные для этого города из определенного API. Эта часть работает. В той же боковой панели у меня также есть список любимых городов, которые зарегистрированные пользователи могут добавлять в этот список столько, сколько они хотят, и позже они могут получить некоторые данные для своих любимых городов, просто нажав на них. Звучит просто, но эта часть не работает. Проблема в том, что Laravel система маршрутизации получает только один идентификатор из моей таблицы избранного для каждого любимого города в списке.

Это маршрут:

Route::get('/favorites/{id}/', 'FavoriteController@show')->name('showFavoriteWeather');

Это контроллер:

    public function show($id){

            $favorite_city = Favorite::find($id);

            // dd($favorite_city);

            $api_key = "";  
            $url = "api.openweathermap.org/data/2.5/group?id=$favorite_city->city_id&units=metric&appid=$api_key"; 
            $ch = curl_init($url);
            curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            $json_response = curl_exec($ch);

            $data = json_decode($json_response, true);

            // dd($data);

            return view('showFavoriteWeather', compact('data'));
        }

Любимые города указаны на боковой панели в порядке, но URL для каждой ссылки одинаков: localhost: 8000 / избранное / 3

Идентификатор всегда 3 и самое сложное в том, что у меня на самом деле нет ничего в моей таблице избранного с этим идентификатором. Я удалил эту строку в день go. Итак, мой вопрос: почему в URL-адресах моих любимых городов отображается только ID 3? База данных, которую я использую: MySQL.

В дополнение к этому, когда я вручную изменяю идентификатор 3 в URL на 1 или 2 или любой другой, который у меня есть в моей базе данных, все работает нормально - я получаю данные, которые я хочу для города, который я выбираю.

Код в блейде, который собирает ссылки, которые не работают, выглядит следующим образом:

<ul>
@foreach ($favorites as $key => $favorite)               
    <li><a href="{{ route('showFavoriteWeather', $id) }}">{{ $favorite->city_name }}</a></li>  
@endforeach
</ul>

1 Ответ

0 голосов
/ 18 января 2020

ваш href должен быть таким:

<a href="{{ route('showFavoriteWeather', $favorite->id) }}">

вы просто передаете $id так, как у вас есть, вам нужно получить идентификатор фактического повторного объекта foreach l oop.

...