Zend framework 从Zend_Db_table_Select获取表别名
我正在为我的Zend Framework库开发一个活动记录模式(类似于RoR/Cake)。我的问题是:如何确定select对象是否正在为表使用别名Zend framework 从Zend_Db_table_Select获取表别名,zend-framework,zend-db-select,aliases,Zend Framework,Zend Db Select,Aliases,我正在为我的Zend Framework库开发一个活动记录模式(类似于RoR/Cake)。我的问题是:如何确定select对象是否正在为表使用别名 $select->from(array("c" => "categories")); vs. $select->from("categories"); 我将其传递给一个“fetch”函数,该函数添加了额外的连接和其他功能,以自动获取行关系……我想添加一些自定义sql;“c.id”或“categories.id”取决于用户如何使用
$select->from(array("c" => "categories"));
vs.
$select->from("categories");
我将其传递给一个“fetch”函数,该函数添加了额外的连接和其他功能,以自动获取行关系……我想添加一些自定义sql;“c.id”或“categories.id”取决于用户如何使用“from”方法
我知道我可以用
$parts = $select->getPart(Zend_Db_Select::FROM);
以数组形式从数据中获取,并且表名或别名似乎位于所述数组的“插槽”0中。表名或别名是否始终位于插槽0中?i、 e.我能否可靠地使用:
$tableNameOrAlias = $parts[0];
抱歉,如果这是令人费解的,但希望您能帮助!:) 从逻辑上讲,我认为它应该是这样工作的。为了安全起见,使用Select()构建一些虚拟查询,并使用
print\r
或类似方法转储零件数组
我刚刚执行了此测试,别名是数组键,它不是基于零的数字数组:
$select = $this->db->select()->from(array("c" => "categories","d" => "dummies"));
$parts = $select->getPart(Zend_Db_Select::FROM);
echo '<pre>';
print_r($parts);
echo '</pre>';
因此,您需要将其引用为
$part[“c”]
嗯,这很好,但我的问题是,我不知道用户是否会传递一个带有别名的表或只是表名的select对象,因此我不能像$part[“c”]那样引用它。也许我可以通过使用php的键($array)来获取[c]?很好,是的!我想这会有所进展$零件=数组(“c”=>数组(“表名”=>“类别”);回声键(部件);给我化名。只需要在部件之间循环,然后抓住钥匙并使用它们。谢谢你的帮助!只是一个提示,这里你称之为“槽”的正确名称是索引。所以数组[0]是索引0,数组['c']是索引'c'。
Array
(
[c] => Array
(
[joinType] => inner join
[schema] =>
[tableName] => categories
[joinCondition] =>
)
)