#php #doctrine-orm #doctrine
#php #doctrine-orm #доктрина
Вопрос:
Я пытаюсь найти все документы, связанные с моим продуктом:
public function findDocumentsRelatedToProduct($id) {
return $this->createQueryBuilder('products')
->leftJoin('products.documents', 'pd')
->where("products.id = :id")
->setParameter(':id', $id)
->getQuery()
->execute();
}
$products = $this->em->getRepository('App\Entity\Products')->findDocumentsRelatedToProduct($id);
foreach ($products as $key => $value) {
dump($value->getDocuments()->getId());
}
Но я получаю сообщение об ошибке:
Попытка вызвать неопределенный метод с именем «getId» класса «Doctrine ORM PersistentCollection».
Ответ №1:
$value->getDocuments()
Возвращает массив объектов Doctrine или PersistentCollection
.
Ваш объект может иметь getId()
функцию, но PersistentCollection
не имеет.
Вы можете перебирать коллекцию :
foreach ($products as $key => $value) {
foreach ($value->getDocuments() as $document) {
dump($document->getId());
}
}
Ответ №2:
getDocuments()
возвращает коллекцию из нескольких product.documents
. Итак, вам также нужно выполнить итерацию по этим документам, а затем использовать ->getId()
отдельные элементы.