Laravel路由在URL中仅显示一个ID,即使该ID在表中不存在

问题描述 投票:1回答:1

在边栏中,我列出了默认城市。当我单击每个城市时,我会从某些API获得该城市的一些数据。那部分起作用。在同一边栏中,我还具有“喜欢的城市”列表,注册用户可以将其添加到该列表中,只要他们愿意就可以,之后,他们可以通过单击它们来获取一些关于他们喜欢的城市的数据。听起来很简单,但这部分不起作用。问题是Laravel路由系统从我的收藏夹表中只为列表中每个喜欢的城市获得一个ID。

这是路线:

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 / favorites / 3

ID始终为3,棘手的部分是我的收藏夹表中实际上没有该ID的任何内容。我一天前删除了该行。所以我的问题是为什么为什么我最喜欢的城市的URL中仅显示ID 3?我正在使用的数据库是MySQL。

此外,当我手动将URL中的ID 3更改为12或数据库中的任何其他内容时,所有这些都工作正常-我得到了数据想要我选择的城市。

刀片中组装无效链接的代码如下:

<ul>
@foreach ($favorites as $key => $favorite)               
    <li><a href="{{ route('showFavoriteWeather', $id) }}">{{ $favorite->city_name }}</a></li>  
@endforeach
</ul>
php laravel url controller routing
1个回答
0
投票

您的href应该是这个:

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

您只是以自己的方式传递$id,您需要获取foreach循环中实际迭代对象的ID。

© www.soinside.com 2019 - 2024. All rights reserved.