Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在codeigniter中基于条件连接表_Php_Mysql_Codeigniter - Fatal编程技术网

Php 如何在codeigniter中基于条件连接表

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

我希望以这样的方式编写一个查询:若收到的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->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)