Php 如何在codeigniter中基于条件连接表
我希望以这样的方式编写一个查询:若收到的id与$id匹配,那个么请求应该与概要文件表连接,如下所示Php 如何在codeigniter中基于条件连接表,php,mysql,codeigniter,Php,Mysql,Codeigniter,我希望以这样的方式编写一个查询:若收到的id与$id匹配,那个么请求应该与概要文件表连接,如下所示 r.sent_id = profile_id 如果发送的\u id与$id匹配,则 r.sent_id = profile_id 我的模特 public function getRequestedDetails($id) { $this->db->select('*'); $this->db->from('profile'); $stat = $this->d
r.sent_id = profile_id
如果发送的\u id与$id匹配,则
r.sent_id = profile_id
我的模特
public function getRequestedDetails($id) {
$this->db->select('*');
$this->db->from('profile');
$stat = $this->db->where('recieved_id', $id);
if($stat)
$this->db->join('requests enter code hereas r', 'r.sent_id = profile_id', 'left');
$stat = $this->db->where('sent_id', $id);
if($stat)
$this->db->join('requests as r', 'r.recieved_id = profile_id', 'left');
$this->db->where('r.status', 1);
$query = $this->db->get();
$list = $query->result();
return $list;
}
我尝试了这个,它显示了以下错误
Error Number: 1066
不是唯一的表/别名:“r”
SELECT * FROM `profile` LEFT JOIN `requests` as `r` ON `r`.`sent_id` = `profile_id` LEFT JOIN `requests` as `r` ON `r`.`recieved_id` = `profile_id` WHERE `recieved_id` = '5' AND `sent_id` = '5' AND `sent_id` = '5' AND `r`.`status` = 1
有人能帮我吗。谢谢。试试这个
SELECT *
FROM profile
LEFT JOIN requests AS requests
ON (requests.sent_id = profile.profile_id OR requests.recieved_id = profile.profile_id)
WHERE profile.recieved_id = '5'
AND profile.sent_id = '5'
AND profile.sent_id = '5'
AND requests.status = 1
试试这个
public function getRequestedDetails($id) {
$query = $this->db->select('*')
->from('profile')
->join('requests','(requests.sent_id = ' . $id . ' AND requests.sent_id = profile.profile_id)
OR (requests.recieved_id = ' . $id . ' AND requests.recieved_id = profile.profile_id'), 'left')
->where('profile.status',1)
->get();
$list = $query->result();
return $list;
}
不需要添加此
$stat=$this->db->where('received_id',$id)
和$stat=$this->db->where('sent\u id',$id)
如果id设置为其全部设置,如果为空则为空,因为wll也有单独的id$this->db->where('sent_id',$id)代码>