我在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');
因为我想在新闻表中...但它没有用
任何解决方案?
答案 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);