У меня есть запрос Doctrine в моей модели, скажем Model_1Table.class.php, который оставил соединение с Model_2. Model_2 относится к Model_1 по отношению ко многим-к-одному. (Это на самом деле отношение один к одному, а не многие-к-одному, но схема получила разработан таким образом)Doctrine pain при доступе к членам левого объединения, которые являются нулевыми
Мой запрос:
$this->select('m1.*, m2.primaryKeyOfModel2')->leftJoin('m1.model2 m2')->where('m1.record = ?', some_value);
журналы Inspecting SF Debugger, он извлекает информацию как и следовало ожидать, сохранение всех табличных записей из 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 в вышеприведенной записи и просто получаю доступ к коллекции Model2Record с циклом foreach, извлекаются доступные строки в Model2Record, но, в конце концов, он не имеет доступа к нулевым значениям , По сути, информация, которую я получаю от этого, - это то, что я обычно получаю от внутреннего соединения.
Чтобы задать вопрос, как мне получить доступ к записям Model1, которые имеют записи Model2 как нулевые значения?
его возвращение в сборник доктрины; поэтому условие else никогда не выполнялось; поэтому для тех, у кого есть нулевые значения, визуализируются пустые коллекции ... – user1020069
instanceof Model2 не удастся, потому что это отношение «один ко многим» и возвращает коллекцию записей. – user1020069
. Через несколько дней ... вы получили это Работа? –