在边栏中,我列出了默认城市。当我单击每个城市时,我会从某些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更改为1或2或数据库中的任何其他内容时,所有这些都工作正常-我得到了数据想要我选择的城市。
刀片中组装无效链接的代码如下:
<ul>
@foreach ($favorites as $key => $favorite)
<li><a href="{{ route('showFavoriteWeather', $id) }}">{{ $favorite->city_name }}</a></li>
@endforeach
</ul>
您的href应该是这个:
<a href="{{ route('showFavoriteWeather', $favorite->id) }}">
您只是以自己的方式传递$id
,您需要获取foreach循环中实际迭代对象的ID。