【发布时间】:2018-05-21 10:48:07
【问题描述】:
我正在使用 laravel 的查询构建器从我的数据库中获取位置。我需要加入 2 个表,然后按位置查询结果。在我添加连接之前一切正常。
如果我这样做
$locations = DB::table('locations')
->join('charities', 'locations.charity', '=', 'charities.charity')
->when($charity, function ($query) use ($charity) {
return $query->where('charity', '=', $charity);
})
->get();
然后它返回我需要的两个表的内容。如果我这样做了
$locations = DB::table('locations')
->select('locations.*')
->selectRaw('( 3959 * acos( cos( radians(?) ) *
cos( radians( latitude ) )
* cos( radians( longitude ) - radians(?)
) + sin( radians(?) ) *
sin( radians( latitude ) ) )
) AS distance', [$lat, $lng, $lat])
->havingRaw("distance < ?", [$max_distance])
->when($charity, function ($query) use ($charity) {
return $query->where('charity', '=', $charity);
})
->get();
然后我得到位置表的内容并且过滤器工作正常。
我将两者放在一起,它只返回没有错误的位置内容,并且没有加入慈善表。
$locations = DB::table('locations')
->join('charities', 'locations.charity', '=', 'charities.charity')
->select('locations.*')
->selectRaw('( 3959 * acos( cos( radians(?) ) *
cos( radians( latitude ) )
* cos( radians( longitude ) - radians(?)
) + sin( radians(?) ) *
sin( radians( latitude ) ) )
) AS distance', [$lat, $lng, $lat])
->havingRaw("distance < ?", [$max_distance])
->when($charity, function ($query) use ($charity) {
return $query->where('charity', '=', $charity);
})
->get();
【问题讨论】:
-
尝试为每一列指定它来自的表的名称。
-
Charity 表中唯一的信息是慈善机构名称,该名称已经在进行加入的位置和慈善机构徽标。其他一切都来自位置表
-
抱歉没有正确阅读您的帖子,我已经为每一列指定了表格,它很有魅力!谢谢
标签: mysql laravel laravel-5 laravel-eloquent laravel-query-builder