php - Trying to Get Data From Db using Form Under 10 Km
问题描述
i am trying to get data from database under 10 km records through latitude and longitude using form but i am facing erorr
erorr
Illuminate\Database\QueryException SQLSTATE[42S22]: Column not found: 1054 Unknown column 'distance' in 'having clause' (SQL: select count(*) as aggregate from
users
having distance < 25)
Web.php
Route::get('/map','MapController@index');
Route::get('/userview','MapController@getUserByLatLong');
Route::post('/showdata','Mapcontroller@showdata');
User.blade.php
<form method="POST" action="{{ action('Mapcontroller@showdata') }}">
@csrf
<lable>Latitude</lable>
<input type="text" name="latitude" /><br>
<lable>Longitude</lable>
<input type="text" name="longitude" /><br>
<lable>Kilomneter</lable>
<input type="text" name="kilometer" /><br>
<input type="submit" name="submit" /><br>
</form>
Controller code
public function showdata(Request $request)
{
$this->validate($request, [
'latitude' => 'required',
'longitude' => 'required'
]);
$latitude = $request->input('latitude');
$longitude = $request->input('longitude');
$users = DB::table('users')
->select(DB::raw($latitude,$longitude, 'SQRT(POW(69.1 * (latitude - 24.900110), 2) + POW(69.1 * (67.099760 -longitude) * COS(latitude / 57.3), 2)) AS distance'))
->havingRaw('distance < 25')
->OrderBy('distance')
->paginate(10)
->get();
echo $users;
return view('userview',['users' => $users]);
}
解决方案
我认为对您来说最好的解决方案是在您的用户表中添加列距离,而不是在您的模型中添加一个 mutator,如下所示:
public function setDistanceAttribute($value)
{
return $this->attributes['distance'] = SQRT(POW(69.1 * ($this->['latitude'] - 24.900110), 2) + POW(69.1 * (67.099760 -$this->['longitude']) * COS(latitude / 57.3), 2));
}
然后更新您的查询:
$users = DB::table('users')
->select(DB::raw($latitude,$longitude))
->havingRaw('distance < 25')
->OrderBy('distance')
->paginate(10)
->get();
希望它有效:)
推荐阅读
- javascript - mongoose.save 的问题永远不会在承诺内返回
- c++ - 为什么我不能在类中另一个函数的声明中使用静态 constexpr 的结果?
- c++ - 是否可以将 constexpr std::array 转换为 std::integer_sequence?
- ios - 从另一个应用程序 ios 链接到设置应用程序的声音部分
- jquery - 打开第二个 jquery 对话框失败
- python - 如何将轮廓转换为链码?
- php - 表单条目表搜索结果打开新页面和错误
- javascript - Outlook Web 加载项中的 iframe 无法在 Edge/IE 中加载动态 HTML 内容
- bash - Unix 重击。循环增量整数对
- html - 在徽标下正确居中文本面板