concat в php codeigniter - PullRequest
       14

concat в php codeigniter

3 голосов
/ 07 января 2011

Пожалуйста, помогите мне понять правильный синтаксис соединения.

У меня есть таблица с именем инвентарь , которая имеет:

trans_id    
trans_items items -> item_id         
trans_user  employees -> person_id           
trans_date                   
trans_comment                
trans_inventory     

Как вы можете видеть выше, trans_items является внешним ключом в таблице элементов, а trans_user является внешним ключом в таблице сотрудников, а идентификатор сотрудника является внешним ключом таблицы сотрудников.

Теперь я хочу отобразить таблицу инвентаризации в HTML, но вместо отображения идентификатора сотрудника я хочу, чтобы отображалось ИМЯ сотрудника.


EDIT .............................................. .. так что я был в состоянии отобразить только фамилию сотрудника с этим кодом:

$this->db->select('inventory.*, items.name ,people.last_name');
$this->db->from('inventory');
$this->db->join('items', 'inventory.trans_items = items.item_id' , 'left');
$this->db->join('people', 'inventory.trans_user = people.person_id' , 'left');
$this->db->where('deleted', 0);
$this->db->order_by('trans_date desc');

с кодом модели:

foreach($report_data as $row)
        {
            $tabular_data[] = array($row['name'], $row['last_name'],$row['trans_date'], $row['trans_inventory'], $row['trans_comment']);
        }

но мне нужно, чтобы это были имя и фамилия, поэтому я сделал это:

$this->db->select('inventory.*, items.name ,CONCAT(people.first_name, " ",people.last_name) as employee');
$this->db->from('inventory');
$this->db->join('items', 'inventory.trans_items = items.item_id' , 'left');
$this->db->join('people', 'inventory.trans_user = people.person_id' , 'left');
$this->db->where('deleted', 0);
$this->db->order_by('trans_date desc');

с кодом модели:

foreach($report_data as $row)
        {
            $tabular_data[] = array($row['name'], $row['employee'],$row['trans_date'], $row['trans_inventory'], $row['trans_comment']);
        }

было бы ошибкой, если бы я использовал функцию concat. пожалуйста, помогите.

Ответы [ 2 ]

21 голосов
/ 07 января 2011

Ваш выбор должен быть таким (второй параметр в $ this-> db-> select ('your select part', FALSE)):

$this->db->select('inventory.*, items.name ,CONCAT(people.first_name, " ",people.last_name) as employee', FALSE);
$this->db->from('inventory');
$this->db->join('items', 'inventory.trans_items = items.item_id' , 'left');
$this->db->join('people', 'inventory.trans_user = people.person_id' , 'left');
$this->db->where('deleted', 0);
$this->db->order_by('trans_date desc');

Цитата из руководства Codeigniter:

Если вы установите значение FALSE, CodeIgniter не будет пытаться защитить имена ваших полей или таблиц обратными галочками.Это полезно, если вам нужен составной оператор выбора.

0 голосов
/ 05 апреля 2014
$query=$this->db->select("id, CONCAT(nombre,".' '.",apellido_paterno) as nombre", false)->
                                from("empleado")->
                                where('empleado', $filtro)->
                                order_by("nombre")->
                                get();

добавить только ложь, чтобы выбрать

...