我正在尝试将我的数据库查询转换为 codeigniter活动记录,但似乎无法以正确的方式正确处理它。
我做错了什么。
Error
Error Number: 1066
Not unique table/alias: 'user_group'
SELECT * FROM (`user_group`, `user`) JOIN `user_group` ON WHERE `ug`.`user_group_id` IS NULL AND `u`.`user_id` = '1'
Filename: C:\Xampp\htdocs\codeigniter-project\system\database\DB_driver.php
Line Number: 330
模型
public function getUser($user_id) {
$this->db->select('*', 'ug.user_group', 'u.user');
$this->db->from($this->db->dbprefix . 'user_group');
$this->db->join('user_group');
$this->db->where('ug.user_group_id');
$this->db->from($this->db->dbprefix . 'user');
$this->db->where('u.user_id', $user_id);
$query = $this->db->get();
if ($query->num_rows() > 0) {
return $query->result_array();
return true;
} else {
return false;
}
}
旧模式方式
public function getUser1($user_id) {
$query = $this->db->query("SELECT *, (SELECT ug.name FROM `" . $this->db->dbprefix . "user_group` ug WHERE
ug.user_group_id = u.user_group_id)
AS user_group FROM `" . $this->db->dbprefix .
"user` u WHERE u.user_id = '" . (int)$user_id . "'");
return $query->row_array();
}
答案 0 :(得分:0)
看起来你输入的语法错误了。请尝试使用以下代码
$this->db->select('user.*,user_group.name as user_group');
$this->db->from('user');
$this->db->join('user_group','user.user_group_id = user_group.user_group_id');
$this->db->where('user.user_id', $user_id);
$query = $this->db->get();
如果您对此查询有任何错误/问题,请告诉我。
希望这会对你有所帮助。
答案 1 :(得分:0)
也许你可以尝试以下.. “PHP Weblineindia”的回答几乎相同,但他们错过了db前缀。
$this->db->select('u.*, ug.name AS user_group');
$this->db->from($this->db->dbprefix . 'user u');
$this->db->join($this->db->dbprefix . 'user_group ug', 'ug.user_group_id = u.user_group_id');
$this->db->where('u.user_id', $user_id);
$query = $this->db->get();
未经测试的代码,仅基于我在您的问题中看到的内容。
答案 2 :(得分:0)
请使用此代码
public function getUser($user_id) {
$this->db->select(array('*', 'ug.user_group', 'u.user'));
$this->db->join($this->db->dbprefix .'user_group AS ug','ug.column = u.column','INNER');
//please user column similar in both tables
$this->db->from($this->db->dbprefix . 'user as u');
$this->db->where('u.user_id', $user_id);
$query = $this->db->get();
if ($query->num_rows() > 0) {
return $query->result_array();
return true;
} else {
return false;
}
}
我希望这会对你有所帮助。