我在数据库中有3个表。
core_user core_company ct_company
我想加入2个表core_user和core_company,其中foriegn key是cmp_id列..
但它显示错误。
错误号码:1066
不唯一的表/别名:'core_user'
SELECT * FROM(core_user
,core_user
)加入core_company
ON core_company
。cmp_id
= core_user
。cmp_id
WHERE usr_email
='fahad@gmail.com'和usr_password
='123456'和cmp_name
='corpoleave'
文件名:F:/xampp/htdocs/corpoLeave/application/models/loginmodel.php
行号:10
这是我的模特。请帮忙。感谢
<?php class LoginModel extends CI_Model{
public function login_valid($email,$password,$cname){
$q= $this->db->where(['usr_email'=>$email,'usr_password'=>$password,'cmp_name'=>$cname])
->from('core_user');
$this->db->join('core_company', 'core_company.cmp_id = core_user.cmp_id');
$q = $this->db->get('core_user')->result();
if($q->result()==true)
{
return $q->row()->user_id;
}
else{
return false;
}
}}
?>
答案 0 :(得分:2)
在Codeigniter查询构建器中,get()
和from()
方法的执行方式相似。
获取()强>
$query = $this->db->get('mytable');
// Produces: SELECT * FROM mytable
<强>从()强>
$this->db->select('title, content, date');
$this->db->from('mytable');
$query = $this->db->get();
// Produces: SELECT title, content, date FROM mytable
get("tablename")
和from("tablename")
方法都有效地将FROM tablename
附加到构建的语句中,如下所示:
$this->db->select('title, content, date');
$this->db->from('mytable');
$query = $this->db->get('mytable');
// Produces: SELECT title, content, date FROM mytable FROM mytable
(注意双“FROM”语句)
您收到错误是因为您同时使用from()
和get()
表名。您可以删除from()
语句,也可以从get()
语句中删除表名。
这看起来像是:
<?php
class LoginModel extends CI_Model {
public function login_valid($email, $password, $cname) {
$this->db->where(['usr_email' => $email, 'usr_password' => $password, 'cmp_name' => $cname]);
$this->db->from('core_user');
$this->db->join('core_company', 'core_company.cmp_id = core_user.cmp_id');
$q = $this->db->get();
if ($q->result()) {
return $q->row()->user_id;
} else {
return false;
}
}
}