我在我的模型學說查詢說Model_1Table.class.php是左與Model_2連接。 Model_2與多對一關係中的Model_1相關。 (果然是一個一對一的關係,而不是多到一個,但該模式得到了設計成)主義疼痛左的訪問成員加入是空
我的查詢是:
$this->select('m1.*, m2.primaryKeyOfModel2')->leftJoin('m1.model2 m2')->where('m1.record = ?', some_value);
檢查SF調試日誌,它檢索信息因爲它應該保留來自Model_1的滿足where子句的所有表記錄,並保留Model_2的所有值以及那些不存在的值的空值。
疼痛開始時,我想訪問這些信息,並有條件地呈現依賴於我的表的存在/不存在的model_2記錄的信息。我這樣做:
<?php foreach($Model1Records as $Model1Record) :
if($Model1Record->getModel2()) :
foreach($Model1Record->getModel2() as $Model2Record):
//do something
end foreach ;
else: //basically checking for if(!($Model1Record->getModel2()))
// do something else
endif;
endforeach ; ?>
現在,在此基礎上,應該真正的工作,但我認爲正在發生的事情是,MODEL2的空值失敗。我怎麼推斷,很好,因爲如果我刪除在上面記錄的if-else語句,並簡單地用一個foreach循環訪問Model2Record的集合,在Model2Record可用檢索行,但隨後offcourse它不訪問空值。從本質上講,我從這裏得到的信息就是我通常從內部聯接獲得的信息。
在框架的一個問題,我怎麼訪問具有Model2的記錄爲空值的模型1的記錄?
它返回一個Doctrine Collection;這就是爲什麼其他條件從未執行;所以對於那些空值,空集合渲染... – user1020069 2012-08-19 03:20:42
的instanceof模型2會失敗,因爲它是一個一對多的關係,它返回的記錄的集合 – user1020069 2012-08-19 03:37:19
去過幾天...你得到它的工作? – 2012-08-23 20:21:11