我正在尝试从第二个表中获取标题(通过左连接),但我的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)
有没有办法在不将其添加到CourseEntity的情况下显示studyprogram_title?它实际上不是它的一部分,所以我想如果我把它添加到那里就脏了。
答案 0 :(得分:0)
有一种方法可以处理模型中的两个表。
如果要直接连接两个表而不为每个表指定tablegateway
,那么这将引发问题。这意味着您无法将resultset
设置为数组,因为在这种情况下,您没有使用resultsetprototype
作为另一个表,就像您正在尝试的那个(当前模型)一样加入两个表。
您可以查看此answer!