zend db join结果集

时间:2011-06-10 22:00:20

标签: zend-db inner-join zend-db-select

我使用zend_db_select连接3个表,而在结果集数组中,我希望看到带有别名的列名,它返回一个没有别名的键的数组。

$dbSelect = $db->select()->from(array("pp"=>"products_photos"),array())
                         ->joinInner(array("ph"=>"photos"), "pp.photo_id=ph.photo_id","ph.photo_id")
                         ->joinInner(array('pr'=>'products'),"pr.product_id=pp.product_id","pr.product_id")
                         ->where("pr.product_id=$row->product_id");

$photoJoinRowSet = $db->fetchAll($dbSelect);
var_dump($photoJoinRowSet);die();

结果如:

array(2) { [0]=> array(3) { ["product_id"]=> string(1) "1" ["photo_id"]=> string(1) "4" }}

虽然我在期待:

array(2) { [0]=> array(3) { ["pr.product_id"]=> string(1) "1" ["ph.photo_id"]=> string(1) "4" }}

......即列别名。

有谁知道为什么会这样?感谢。

1 个答案:

答案 0 :(得分:1)

您未在此处指定任何别名,因此您的选择将转换为SELECT ph.photo_id, pr.product_id,而不是AS,将按预期返回photo_idproduct_id

如果您想要键中的点,则需要明确指定别名:

$dbSelect = $db->select()->from(array("pp"=>"products_photos"),array())
    ->joinInner(array("ph"=>"photos"), "pp.photo_id=ph.photo_id",
      array("ph.photo_id" => "ph.photo_id"))
    ->joinInner(array('pr'=>'products'), "pr.product_id=pp.product_id",
      array("pr.product_id" => "pr.product_id"))
    ->where("pr.product_id=$row->product_id");

有关Zend_Db_Select documentation的更多信息。