2011-11-21 101 views
4

我遇到了問題。我試圖用$ select對象與Zend Framework離開連接兩個表。不幸的是,我的表具有共同的字段「名稱」,當我與其他人結合時,我得到的結果是來自表的名稱字段會覆蓋另一個名稱字段。joinLeft Zend Framework,不同表格中的字段名稱相同

我的代碼是類似的東西:

$select->joinLeft (array ('users' => 'users'), $this->_name . '.employee_id = users.user_id', array ('*')); 

我怎麼可以連接的表和避免這個問題?

回答

4

像在任何普通的sql查詢中一樣使用表別名!

隨着Zend_Db的別名這樣寫的:

$select = $db->select() 
     ->from(array('p' => 'products'), 
       array('product_id', 'product_name')) 
     ->join(array('l' => 'line_items'), 
       'p.product_id = l.product_id', 
       array()); // empty list of columns 

非Zend的查詢應該是這樣的:

SELECT p.product_id, p.product_name 
FROM products AS p 
JOIN line_items AS l ON p.product_id = l.product_id; 
4

我想這是有點晚了,但得到的兩個表中的所有字段你必須別名所有字段

$select = $db->select() 
    ->from(array('u' => 'users'), 
      array('u.id'=>'u.id','u.employee_id'=>'u.employee_id','u.name'=>'u.name')) 
    ->joinLeft(array('e' => 'employees'), 
      'e.id = u.employee_id', 
      array('e.id'=>'e.id','e.name'=>'e.name')); 

而你的數組看起來像:

array(
0=>array(
    'u.id'=>'1', 
    'u.employee_id'=>'1', 
    'u.name'=>'John Doe', 
    'e.id'=>'1', 
    'e.name'=>'Worker' 
), 
1=>array(
    ... 
)); 
相關問題