zf2 - присоединиться, используя Zend\Db\TableGateway\TableGateway;

Я хочу сделать простое соединение, используя zf2, выбирая поля из первой и второй таблиц, но я получаю ошибку ("Оператор не может быть выполнен"), когда я пытаюсь поместить массив полей в метод столбцов.

public function fetchAll()
{
    $resultSet = $this->tableGateway->select(function (Select $select) {
        $select->columns();// ->with params gives an 'Statement could not be executed'
        $select->join(array('t2' => 'categories'), 'table1.idCategory = t2.id');
        $select->order('dateTime DESC')->limit(100);
    });  
...
}

2 ответа

Либо прокомментируйте это утверждение, либо добавьте хотя бы одно допустимое имя "столбца" в массив (столбец таблицы / имя поля).

$select->columns(array('column_one', 'column_two', 'column_N'));

Пустой $select->columns(); оператор генерирует SQL-запрос что-то вроде SELECT FROM table_name что приводит к ошибке.

Когда вы комментируете это утверждение, он генерирует SQL-запрос, как SELECT * FROM table_nameи если вы передаете имена столбцов, звездочки заменяются ими.

Вам нужно убедиться, что поля dateTime/id находятся в предоставленном вами списке столбцов.

Если вы выбросите исключение ($e->getTraceAsString()), вы получите дополнительную информацию о том, что является причиной вашей ошибки.

Другие вопросы по тегам