猿问

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

在我的侧边栏中,我列出了默认城市。当我点击每个城市时,我会从某个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/收藏夹/3


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


除此之外,当我手动将URL中的ID 3更改为1或2或我在数据库中的任何其他ID 3时,一切都可以正常工作 - 我获得了我想要的我所选择的城市的数据。


边栏选项卡中用于组装不起作用的链接的代码如下所示:


<ul>

@foreach ($favorites as $key => $favorite)               

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

@endforeach

</ul>


慕森卡
浏览 114回答 1
1回答

烙印99

你的 href 应该是这样的:<a&nbsp;href="{{&nbsp;route('showFavoriteWeather',&nbsp;$favorite->id)&nbsp;}}">你只是以你拥有它的方式传递,你需要获取foreach循环的实际迭代对象的ID。$id
随时随地看视频慕课网APP
我要回答