连接表覆盖列

时间:2012-01-12 00:23:32

标签: php zend-framework pdo zend-db-table

Zend_Db_TableZend_Db_Table_SelectZend_Db_Adapter_Pdo_Pgsql一起使用时,我在使用选择查询时出现问题:

$rowset = $db->select()->from(array('a'=>'tablea'))
             ->columns(array('a.a'))
             ->join(array('b'=>'tableb'),'b.id = a.id', array('b.a'))
             ->query()->fetchAll();

行集的预期内容:(主要是键)

$rowset['a.a'] = "something";
$rowset['b.a'] = "somethingElse";

$rowset的实际内容中,只有$rowset['a']存在,无法区分已连接的表格。

对此有何解决方案?


刚刚做一个

$q = "SELECT * FROM tablea AS a
JOIN tableb AS b ON a.key = b.fkey";
$dbtable->getAdapter()->fetchAll($q);

我也得不到我的期望。

1 个答案:

答案 0 :(得分:0)

为了在匹配列名称时区分表a和b,您需要对表b中的列进行别名。然后,联接看起来像:

->join(array('b' => 'tableb'), 'a.id = b.id', array('a_from_b' => 'b.a'))

请注意,'ON'条件应该是字符串,而不是数组。