我有db和我的表是这样的:
替代文字http://img15.imageshack.us/img15/2568/stackdijag.png
我想要做的是让地方的厂家名称列以A开头的所有车型这意味着,查询简单的部分应该像$ manufacturers->使用fetchall(“名LIKE‘$字母%’”);
我试图用ZF关系,做到这一点,但它不会,那么任何形式的帮助是值得欢迎...
我有db和我的表是这样的:
替代文字http://img15.imageshack.us/img15/2568/stackdijag.png
我想要做的是让地方的厂家名称列以A开头的所有车型这意味着,查询简单的部分应该像$ manufacturers->使用fetchall(“名LIKE‘$字母%’”);
我试图用ZF关系,做到这一点,但它不会,那么任何形式的帮助是值得欢迎...
$models = new Models();
$select = $models->select(Zend_Db_Table::SELECT_WITH_FROM_PART);
$select->setIntegrityCheck(false)
->join(array("a"=>"manufacturers"), 'models.manufacturer_id = a.id',
array("man_name"=>"name", "man_description"=>"description"))
->where("a.name LIKE 'A%'");
$rowset = $models->fetchAll($select);
不幸的是, Zend_Db_Table
关系的接口并没有在它大量情报,与创建从其宣称的参考地图加入查询。 对于复杂的查询社区提供的解决方案是Zend_Db_Table_Select
的查询工厂。
请注意,你必须给列别名制造商的名称和说明,否则这些列将用于该行数据关联数组中抑制模型的名称和说明。 您应该为列清楚,以避免这种情况。
但是,在你的情况,我会跳过表界面和选择界面,并且只需使用DB适配器执行一个SQL查询直接:
$data = $db->fetchAll("
SELECT m.*, a.name AS man_name, a.description AS man_description
FROM Models m JOIN Manufacturers a ON m.manufacturer_id = a.id
WHERE a.name LIKE 'A%'");
你会找回数据关联数组的一个简单的数组,而不是作为一个Zend_Db_Table_Rowset
。 但因为加入了行集是不可写,无论如何,你都没有太大的牺牲。