2017-07-03 65 views
0

我試圖從第二個表中獲取標題(通過左連接),但是我的結果集未傳遞連接表的列。SQL加入ZF3表達式 - 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中?它並不是真正的一部分,所以我想如果我在那裏添加它,它就會變髒。

回答

0

有一種方法可以處理模型中的兩個表格。

如果您想要直接連接兩個表,而不是爲每個表指定tablegateway那麼會引發問題。這意味着您不能將resultset設置爲數組,因爲在這種情況下,您沒有爲其他表使用resultsetprototype,就像您嘗試加入兩個表的那個(當前模型)一樣。

你可以看看這個answer