我在mysql上有一个简单的Left查询
SELECT sp. * , p.name, p.date_created
FROM subpages sp
LEFT JOIN pages p ON p.id = sp.page_id
我不知道如何从zend框架中执行此查询。
我有一个Mapper页面,它访问一个扩展Zend_Db_Table_Abstract的DbTable页面。我读了一些文章,所以我想声明应该从mapper看起来像这样
$select = $this -> DbTable() -> select();
$select -> joinleft(..... This is what I dont know how to write....);
$results = $this -> DbTable() -> fetchAll($select);
if($results) { return $result; }
在文章中,$select -> from()
被使用了,在我的思绪陷入困境的情况下,为什么我们需要在已经在DbTable页面中定义它时编写$select -> from("subpages")
。
如何正确编写连接语句?
答案 0 :(得分:1)
根据您发布的查询,您可以使用以下
(You have not mentioned table name for ailas 'mi' so I have taken it as 'your_table_name' )
$select = $this -> DbTable() -> select()->from(array("your_table_name" => 'mi');
$select -> joinleft(array("pages" => 'p'),"p.id = mi.page_id");
$results = $this -> DbTable() -> fetchAll($select);
if($results) { return $result; }
Hope it will work for you mrN.
答案 1 :(得分:1)
如果要将select与多个表一起使用,则需要从表适配器中获取它,这是一个Zend_Db
对象(您需要指定表)在from()
方法中。
所以,您需要以下内容:
$select = $this->DbTable()->getAdapter()->select();
$select->from(array("mi" => "tableName"));
$select->joinLeft(array("p" => "pages"), "p.id = mi.page_id");
(etc)
希望有所帮助,