Zend DB Выберите версию простого левого соединения Mysql

У меня есть простой левый запрос на mysql

SELECT sp. * , p.name, p.date_created
FROM subpages sp
LEFT JOIN pages p ON p.id = sp.page_id

Я не знаю, как выполнить этот запрос из zend framework.

У меня есть страница Mapper, которая обращается к странице DbTable, которая расширяет Zend_Db_Table_Abstract. Я читал некоторые статьи, поэтому я полагаю, что заявление должно выглядеть примерно так из картографа

$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(), вот где мой разум застрял, зачем нужно писать $select -> from("subpages") когда он уже будет определен на странице DbTable.

Как правильно написать оператор соединения?


person mrN    schedule 27.09.2011    source источник


Ответы (2)


Если вы хотите использовать выбор с несколькими таблицами, вам нужно получить его из адаптера таблицы, который является объектом Zend_Db (и вам нужно будет указать свою таблицу в методе from()).

Итак, вам понадобится что-то вроде следующего:

$select = $this->DbTable()->getAdapter()->select();
$select->from(array("mi" => "tableName"));
$select->joinLeft(array("p" => "pages"), "p.id = mi.page_id");
(etc)

Надеюсь, это поможет,

person dinopmi    schedule 27.09.2011
comment
Хорошо, я могу использовать это, чтобы пойти по своим делам. Спасибо - person mrN; 27.09.2011

Из опубликованного вами запроса вы можете использовать следующее

 (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.
person kbbagal    schedule 27.09.2011
comment
mi была ошибкой, это sp. Как определить отдельные поля p.name и p.date_created - person mrN; 27.09.2011
comment
и возникает ошибка Zend_Db_Table_Select_Exception: Select query cannot join with another table - person mrN; 27.09.2011