#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. Я собираюсь предположить, что второй подход помог. Я говорю это только потому, что в вашем сообщении говорится, что вы попробовали первый подход, о котором я упомянул, но он не сработал.