Таблица Zend DB не видит предложение FROM

#zend-framework

#zend-framework

Вопрос:

У меня есть класс Zend DB Table, который обертывает мою таблицу Country. Однако, когда я создаю объект select с его помощью, он сообщает мне, что в моей инструкции SQL нет предложения FROM. Вот код:

 $table = new Application_Model_DbTable_Countries();
$rows = $table->fetchAll($table->select()->columns(array('id', 'name')));       
$countryList = (array) $rows;
  

Если я включаю ->from(‘Страны’) сразу после ->select(), это говорит о том, что «запрос select не может соединиться с другой таблицей».

Что я делаю не так?

Спасибо!

Комментарии:

1. Я знаю, это звучит как глупый вопрос, но указали ли вы защищенную переменную $_name в классе Application_Model_DbTable_Countries?

Ответ №1:

При использовании команды columns вы должны указать таблицу с помощью вызова from следующим образом

 

$rows = $table->fetchAll($table->select()->from( 'tablename')->columns(array('id', 'name')));       


  

Я не совсем уверен, почему, но я думаю, это потому, что, как только вы начинаете использовать вызов columns и создаете свои собственные selects, Zend предполагает, что вы, возможно, выполняете объединения и другую магию.

Это выдаст вам эту ошибку, даже если вы укажете переменную $_name в классе table.

Я полагаю, вы также можете сделать следующее :

 

$rows = $table->fetchAll($table->select(true)->columns(array('id', 'name')));       

  

Это подскажет select включить таблицу из класса table.

Комментарии:

1. Нет, проблема в Kim. Я собираюсь предположить, что второй подход помог. Я говорю это только потому, что в вашем сообщении говорится, что вы попробовали первый подход, о котором я упомянул, но он не сработал.