У меня есть этот код
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 являются одинаковыми.
Надеюсь, я объяснил это достаточно подробно.
Кто-нибудь знает, что может быть причиной этого?
Благодарю.