'where子句'codeigniter中的未知列'距离'

时间:2015-12-14 13:20:56

标签: codeigniter activerecord

下面你好朋友是我正在执行的查询并且获取数据库错误未知列距离请帮助..

$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();

2 个答案:

答案 0 :(得分:1)

您可以使用可以查看别名的having()子句,而不是使用where()子句。

$this->db->having('distance <=', $radius);

答案 1 :(得分:0)

嗯,Alias字段“distance”不能在Where条件中使用。这就是为什么会出现这个错误。您可以使用子查询进行计算并使用其结果来检查Where条件。