我使用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" }}
......即列别名。
有谁知道为什么会这样?感谢。
答案 0 :(得分:1)
您未在此处指定任何别名,因此您的选择将转换为SELECT ph.photo_id, pr.product_id
,而不是AS
,将按预期返回photo_id
和product_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的更多信息。