Codeigniter - 活动记录其中加入列不明确

时间:2014-12-26 08:23:35

标签: mysql codeigniter

我在codeigniter中遇到活动记录问题。

这是我的sql

$this->db->select('*');
    $this->db->from('news as n');
    $this->db->join('user as u', 'n.id_user = u.id_user');
    $this->db->where('like >','10');
    $this->db->limit(10);
    $this->db->offset($offset);
    $query = $this->db->get(); 
    return $query->result_array();

包含“喜欢”列和“用户”列的“新闻”表格也包含“喜欢“

,输出如下:

where子句中的'like'列是不明确的

SELECT * FROM (`news` as n) 
    JOIN `user` as u ON `n`.`id_user` = `u`.`id` 
    WHERE `like` > '10' LIMIT 5

然后我替换

 $this->db->where('like >','10'); 

 $this->db->where('n.like >','10');

因为我想在新闻表中...但它没有用

任何解决方案?

4 个答案:

答案 0 :(得分:3)

您需要使用新闻表的别名,n n.like

$this->db->select('*');
$this->db->from('news as n');
$this->db->join('user as u', 'n.id_user = u.id_user');
$this->db->where('n.like >','10');
$this->db->limit(10);
$this->db->offset($offset);
$query = $this->db->get(); 
return $query->result_array();

这仍然不起作用,因为like是mysql的保留关键字。您需要将列名更改为其他名称。阅读有关mysql保留关键字here

的更多信息

答案 1 :(得分:1)

如果你有“喜欢”作为列名,请将列放在撇号(`)中,如

$this->db->where('`like` >','10');

但是,使用任何mysql保留关键字作为标识符并不是一个好习惯。将列名更改为else,如果使用like列的多个表使用表别名,如。

$this->db->where('n.`like` >','10');

答案 2 :(得分:1)

尝试这样的事情

    $this->db->select('*');
    $this->db->from('news as n');
    $this->db->join('user as u', 'n.id_user = u.id_user');
    $this->db->where('n.`like` >','10');
    $this->db->limit(10);
    $this->db->offset($offset);
    $query = $this->db->get();

注意:将列名更改为保留关键字

以外的名称

答案 3 :(得分:0)

如果你可以避免使用保留关键字会更好,所以就像列名一样改为喜欢。

$this->db->where('n.likes >', 10);