在php codeigniter中连接

kes*_*nez 3 php mysql concat codeigniter

请帮助我理解正确的连接语法.

我有一个名为inventory的表,其中包含:

trans_id    
trans_items items -> item_id         
trans_user  employees -> person_id           
trans_date                   
trans_comment                
trans_inventory     
Run Code Online (Sandbox Code Playgroud)

如上所示,trans_items是items表中的外键,trans_user是employees表中的外键,employee id是people表的外键.

现在我想做的是在HTML中显示库存表,但是我希望显示员工NAME,而不是显示员工ID.


编辑................................................所以我只能使用以下代码显示员工的姓氏:

$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');
Run Code Online (Sandbox Code Playgroud)

使用型号代码:

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

但我需要它作为名字和姓氏,所以我做了这些:

$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');
Run Code Online (Sandbox Code Playgroud)

使用型号代码:

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

如果我使用concat函数会出错.请帮忙.

Dia*_*blo 22

你的选择必须是这样的($ this-> db-> select中的第二个参数('你的选择部分',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');
Run Code Online (Sandbox Code Playgroud)

从Codeigniter手册引用:

如果将其设置为FALSE,CodeIgniter将不会尝试使用反引号来保护您的字段或表名称.如果您需要复合选择语句,这非常有用.

  • +1表示FALSE在select()中的作用 (2认同)