这是我的代码:
public function getallcontractfiles()
{
$this->db->select('cd.*, GROUP_CONCAT(cf.Contract_File_Name) AS fileslink');
$this->db->from('contract_details as cd');
$this->db->join('contract_files as cf', 'cd.Contract_Id = cf.Contract_Id','LEFT');
if($this->session->userdata['user_type'] == 'ADMIN' && $this->session->userdata['user_group'] == '' ){
$this->db->where('cd.Company_id',$this->session->userdata['company_id']);
}
if($this->session->userdata['user_type'] == 'USER'){
$this->db->where('cd.users_id',$this->session->userdata['logged_user']);
}
$this->db->group_by('cd.Contract_Id ');
$this->db->order_by('cd.Contract_Id', 'desc');
$query = $this->db->get();
// print_r($this->db->last_query()); die;
if ( $query->num_rows() > 0 )
{
foreach($query->result() as $row){
$rows[] = $row;
}
return $rows;
}
}
我的问题是:我还有一个名为company的表,我的App即将打印出与其公司的所有合同文件。我已经将Company_id定义为Contract_files中的外键。 请帮助我加入公司表以执行此功能。 谢谢。
答案 0 :(得分:0)
我对您的ORM不熟悉,但这应该是有道理的:
$this->db->join('company', 'cf.Company_id = company.Company_Id','INNER');
在与contract_files表联接之后,也要在company表中也指定要检索的字段。
更新
由于您的查询显示了多个合同文件,因此您必须对company表执行相同的操作,因为每个合同文件可能有许多公司,如果它们都具有同一公司,则外键Company_id应该位于contract_details表中
重要
默认情况下,GROUP_CONCAT()的限制为1024,因此将文件名放在其中并不是最好的主意。
答案 1 :(得分:0)
public function getallcontractfiles(){
$this->db->select('cd.*, GROUP_CONCAT(cf.Contract_File_Name) AS fileslink');
$this->db->from('contract_details as cd');
$this->db->join('contract_files as cf', 'cd.Contract_Id = cf.Contract_Id');
if($this->session->userdata('user_type') == 'ADMIN' && $this->session->userdata('user_group') == '' ){
$this->db->where('cd.Company_id',$this->session->userdata('company_id'));
}
if($this->session->userdata('user_type') == 'USER'){
$this->db->where('cd.users_id',$this->session->userdata('logged_user'));
}
$this->db->group_by('cd.Contract_Id ');
$this->db->order_by('cd.Contract_Id', 'desc');
$query = $this->db->get();
// print_r($this->db->last_query()); die;
if ( $query->num_rows() > 0 )
{
foreach($query->result() as $row){
$rows[] = $row;
}
return $rows;
}
}
尝试此代码。
答案 2 :(得分:-1)
左联接table2 ON table1.column_name = table2.column_name;
右联接table2 ON table1.column_name = table2.column_name;
INNER JOIN table2 ON table1.column_name = table2.column_name;