Quando o Doctrine retorna um monte de objetos, eles são encapsulados em um ArrayCollection, o que permite tratá-los como um simples array PHP, entre outros.
Isso significa que você pode, por exemplo, executar um
in_array($object, $doctrineCollection);
e espere encontrar a proverbial agulha no palheiro.
Mas se você estiver lidando com objetos de complexidade média, você pode entrar neste erro
“Nesting level too deep – recursive dependency?”
Parece que, por padrão, in_array faz comparação não estrita (equivalente a uma operação ==) ao testar o palheiro para a agulha. Isso significa que ele verifica se todas as propriedades são iguais, o que significa que ele começa a percorrer o gráfico do objeto, e isso pode causar problemas se você tiver referências circulares nesse gráfico.
Felizmente
A função in_array tem um modo estrito, entretanto, que até onde eu posso dizer é o equivalente a uma operação ===.
o que significa que você deve verificar se
in_array($object, $doctrineCollection, TRUE);