SQL加入ZF3表达式 - ResultSet不提供连接的列

时间:2017-07-03 09:19:55

标签: zend-db zend-framework3 zend-expressive

我正在尝试从第二个表中获取标题(通过左连接),但我的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?它实际上不是它的一部分,所以我想如果我把它添加到那里就脏了。

1 个答案:

答案 0 :(得分:0)

有一种方法可以处理模型中的两个表。

如果要直接连接两个表而不为每个表指定tablegateway,那么这将引发问题。这意味着您无法将resultset设置为数组,因为在这种情况下,您没有使用resultsetprototype作为另一个表,就像您正在尝试的那个(当前模型)一样加入两个表。

您可以查看此answer