$this->db->select("post.*,(3956 * 2 * ASIN(SQRT( POWER(SIN(($cur_lat -abs(post.post_lat)) * pi()/180 / 2),2) + COS($cur_lat * pi()/180) * COS(abs(post.post_lat) * pi()/180)* POWER(SIN(($cur_long - post.post_long) * pi()/180/2), 2) ))) as distance, source.*, user.firstname, user.lastname");
$this->db->from('post');
$this->db->join('user', 'user.id = post.cop_id');
$this->db->join('source', 'post.source_id = source.id');
$this->db->where('post.cop_id', $user_id);
$this->db->where('post.post_lat !=', '');
$this->db->where('post.post_long !=', '');
if (!empty($radius)) {
$this->db->where('distance <=', $radius);
}
if (!empty($source_array)) {
$this->db->where_in('post.source_id', $source_array);
}
//$this->db->where('source.id !=', 4);
$query = $this->db->get();
echo $this->db->last_query();
// die();
return $query->result();
答案 0 :(得分:1)
您可以使用可以查看别名的having()子句,而不是使用where()子句。
$this->db->having('distance <=', $radius);
答案 1 :(得分:0)
嗯,Alias字段“distance”不能在Where条件中使用。这就是为什么会出现这个错误。您可以使用子查询进行计算并使用其结果来检查Where条件。