SQL Join в ZF3 Expressive - ResultSet не дает объединенные столбцы
Я пытаюсь получить заголовок из второй таблицы (путем левого соединения), но мой resultSet не доставляет столбец объединенной таблицы.
Вот так выглядит мой TableGateway:
public function fetchCourseListWithStudyprogram()
{
$select = $this->getSql()->select();
$select->where->equalTo('course_active', 'Y');
$select->join('studyprogram', 'studyprogram.studyprogram_id = course.studyprogram_id', ['studyprogram_title'], $select::JOIN_LEFT);
$resultSet = $this->selectWith($select);
var_dump($resultSet);
return $resultSet->toArray();
}
Заявление строится так, как должно быть:
public 'queryString' => string 'SELECT `course`.*, `studyprogram`.`studyprogram_title` AS `studyprogram_title` FROM `course` LEFT JOIN `studyprogram` ON `studyprogram`.`studyprogram_id` = `course`.`studyprogram_id` WHERE `course_active` = :where1' (length=214)
Когда дело доходит до получения результатов, он игнорирует столбец "studyprogram_title", я думаю, это из-за заданного resultSet (с привязанным CourseEntity)
Есть ли способ показать studyprogram_title, не добавляя его в CourseEntity? Это на самом деле не часть этого, так что я думаю, это грязно, если я добавлю это туда.
1 ответ
Существует способ обработки двух таблиц в модели.
Если вы хотите объединить две таблицы напрямую без указания tablegateway
тогда для каждой таблицы возникнет проблема. Это означает, что вы не можете сделать resultset
в массив, потому что, в этом случае, вы не используете resultsetprototype
для другой таблицы, как вы делаете для одной (текущей модели), где вы пытаетесь объединить две таблицы.
Вы можете проверить этот ответ!