【发布时间】:2012-08-11 02:39:38
【问题描述】:
我的模型中有一个 Doctrine 查询,说 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 的 null 值它失败了。我该如何推断,因为如果我删除上述记录中的 if-else 语句并简单地使用 foreach 循环访问 Model2Record 的集合,则检索 Model2Record 中的可用行,但是它当然不会访问空值.从本质上讲,我从中获得的信息就是我通常从内部联接中获得的信息。
要提出一个问题,我如何访问 Model1 的记录,其中 Model2 记录为空值?
【问题讨论】:
标签: symfony1 symfony-1.4 doctrine-1.2 doctrine-query