Я хочу объединить 4 таблицы в codeigniter - PullRequest
0 голосов
/ 06 декабря 2018

Пока я не присоединюсь к 3 таблицам

$this->db->select('*');    
$this->db->from('dispatch_challan');
$this->db->join('challan_bilties', 'dispatch_challan.disp_id = challan_bilties.challan_id');
$this->db->join('bilty', 'challan_bilties.challan_bilties_id = bilty.id');
$this->db->where('dispatch_challan.disp_ch_no',$disp_ch_no); 

 $query = $this->db->get();
 return $query->result_array(); 

Мой вывод такой же, как и после таблицы присоединения enter image description here

На изображении выше Consignor и Consignee получить идентификатор, но я хочу имя, поэтому я хочу присоединиться к 4-й таблице, т.е. ts_users

В этой таблице полное имя этого Consignor и Consignee

                           ts_users table

               user_id  user_fullname  user_remark
                 1            abc         consignee
                 2            xyz         consignor
                 3            pqr         consignee
                 4            lmn         consignor  

Iхотите получить полное имя на основе Consignor и Consignee из 4-й таблицы (ts_users)

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Вот как можно без проблем объединить любое количество таблиц в codeigniter:

$this->db->select("
    $table_1.id AS table_1_id,
    $table_1.whatever AS table_1_whatever,
    $table_2.id AS table_2_id,
    $table_2.whatever AS table_2_whatever,
    $table_3.id AS table_3_id,
    $table_3.whatever AS table_3_whatever,
    $table_4.id AS table_4_id,
    $table_4.whatever AS table_4_whatever,
");
$this->db->join($table_2, "$table_2.id = $table_1.table_2_id", 'left');
$this->db->join($table_3, "$table_3.id = $table_1.table_3_id", 'left');
$this->db->join($table_4, "$table_4.id = $table_1.table_4_id", 'left');
0 голосов
/ 06 декабря 2018

Поскольку вы на самом деле не говорите нам, откуда берутся поля consignor и consignee, вам необходимо заполнить пробелы (обозначенные как xxx ниже)

Все, что вам нужносостоит в том, чтобы присоединиться дважды с таблицей ts_users.Добавьте их:

$this->db->join('ts_users u1', 'xxx.consignor = u1.user_id');
$this->db->join('ts_users u2', 'xxx.consignee = u2.user_id');

Поскольку вы будете дважды объединяться с одной и той же таблицей, ваш набор результатов будет немного сбивать с толку, если вы будете придерживаться select *, поэтому я рекомендую выбирать только те поля, которые вам нужны.Например:

$this->db->select('u1.user_id as consignor, u2.user_id as consignee, dispatch_challan.*, challan_bilties.*, bilty.*');

сделайте снимок и дайте мне знать, работает ли он

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...