ArrayCollection (Doctrine) содержит функцию, возвращающую неверные результаты

У меня есть этот код

if(!$from->getFiles()->contains($proxy)) { $return = ""; foreach($from->getFiles() as $file) { $return .= $file->getFilename() . " --- "; } return array('type' => 'error', 'message' => 'Folder '.$from->getName().' does not contain '.$proxy->getFilename(). ' All files from this folder '. $return); } 

Мне жаль, что это плохо отформатировано, но это всего лишь отладочное сообщение.

$ from – это модель папки.

отношение к getFiles () (возвращаемая переменная) – это

 /** * @ORM\ManyToMany(targetEntity="FileProxy", fetch="EXTRA_LAZY") * @ORM\JoinTable(name="file_system_folders_files", * joinColumns={@ORM\JoinColumn(name="file_system_folder_id", referencedColumnName="id")}, * inverseJoinColumns={@ORM\JoinColumn(name="proxy_id", referencedColumnName="id", unique=true)}) */ protected $files; 

getFiles () – это функция, которая возвращает $ files, которые содержатся в этой папке, и возвращается и ArrayCollection.

 /** * Get files * * @return \Doctrine\Common\Collections\Collection */ public function getFiles() { return $this->files; } 

$ proxy – это объект типа FileProxy и он моделирует файл.

Проблема в том, что этот оператор if работает, даже если он содержит объект, который я проверяю, и foreach в этом случае, если для доказательства этого, массив, который я возвращаю, содержит это сообщение = «Folder F не содержит X All файлы из этой папки XYZ ", которая только показывает, что функция contains возвращает неверное значение, потому что X и X являются одинаковыми.

Надеюсь, я объяснил это достаточно подробно.

Кто-нибудь знает, что может быть причиной этого?

Благодарю.