繁体   English   中英

加入3个表codeigniter php

[英]Join 3 tables codeigniter php

我有3个表guest_user_info,pg_company,user_profile。

在guest_user_info中有2列:

g_uid | company_id

在pg_company中有2列:

company_id | user_id

在user_profile中有2列:

id |user_email

在这里,我想user_emailuser_profile.i已经g_uid值( guest_user_info表)。我想从guest_user_info COMPANY_ID并获得COMPANY_ID和配合pg_company表中,有我可以user_id.then匹配与user_id与ID user_profile表。最后,我需要user_profile表中的user_email

好吧,这很简单,您只需要在CodeIgniter中使用活动查询就可以加入。

$this->db->select("UP.id", "UP.user_email");
$this->db->from("guest_user_info AS GU");
$this->db->join("pg_company AS PC", "PC.company_id=GU.company_id");
$this->db->join("user_profile AS UP", "UP.id=PC.user_id");
$this->db->where("GU.g_uid", $guid);
$query = $this->db->get();

return $query->result();

在上面的代码中,必须提供$guid

另外,请查看以下链接:

https://www.codeigniter.com/userguide3/database/query_builder.html

https://www.codeigniter.com/userguide2/database/active_record.html

阅读本文后,您会得到很多东西。

   Check bellow code it`s working fine and  common model function also 
    supported more then one join and also supported  multiple where condition
 order by ,limit.it`s EASY TO USE and REMOVE CODE REDUNDANCY.

   ================================================================
    *Album.php
   //put bellow code in your controller
   =================================================================

    $album_id='';//album id 

   //pass join table value in bellow format
    $join_str[0]['table'] = 'pg_company';
    $join_str[0]['join_table_id'] = 'pg_company.company_id';
    $join_str[0]['from_table_id'] = 'guest_user_info.company_id';
    $join_str[0]['join_type'] = '';//set join type

    $join_str[1]['table'] = 'user_profile';
    $join_str[1]['join_table_id'] = 'user_profile.id';
    $join_str[1]['from_table_id'] = 'guest_user_info.user_id';
    $join_str[1]['join_type'] = '';


    $selected ="guest_user_info.*,user_profile.user_name,pg_company.name";
    $condition_array=array('guest_user_info.g_uid' => $g_uid);     
   $albumData= $this->common->select_data_by_condition('guest_user_info', $condition _array, $selected, '', '', '', '', $join_str);
                               //call common model function

    if (!empty($albumData)) {
        print_r($albumData); // print album data
    } 

 =========================================================================
   Common.php
    //put bellow code in your common model file
 ========================================================================

   function select_data_by_condition($tablename, $condition_array = array(), $data = '*', $sortby = '', $orderby = '', $limit = '', $offset = '', $join_str = array()) {
    $this->db->select($data);
    //if join_str array is not empty then implement the join query
    if (!empty($join_str)) {
        foreach ($join_str as $join) {
            if ($join['join_type'] == '') {
                $this->db->join($join['table'], $join['join_table_id'] . '=' . $join['from_table_id']);
            } else {
                $this->db->join($join['table'], $join['join_table_id'] . '=' . $join['from_table_id'], $join['join_type']);
            }
        }
    }

    //condition array pass to where condition
    $this->db->where($condition_array);


    //Setting Limit for Paging
    if ($limit != '' && $offset == 0) {
        $this->db->limit($limit);
    } else if ($limit != '' && $offset != 0) {
        $this->db->limit($limit, $offset);
    }
    //order by query
    if ($sortby != '' && $orderby != '') {
        $this->db->order_by($sortby, $orderby);
    }

    $query = $this->db->get($tablename);
    //if limit is empty then returns total count
    if ($limit == '') {
        $query->num_rows();
    }
    //if limit is not empty then return result array
    return $query->result_array();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM