Как я могу вызвать функцию-член в массиве с двумя параметрами? - PullRequest
0 голосов
/ 22 сентября 2019

в моем контроллере:

$relationEntity  = $this->getDoctrine()->getRepository(Data::class)->findPosition($dataId,$documentId);
$relationEntity->setContent("hello");

в моем репозитории:

  public function findPosition($dataId,$documentId) {

    return $this->createQueryBuilder('data')
                    ->leftJoin('data.documents', 'dd')
                    ->andWhere('dd.uuid = :documentId')
                    ->andWhere('data.document_id = :dataId')
                    ->setParameter('documentId', $documentId)
                    ->setParameter('dataId', $dataId)
                    ->getQuery()
                    ->execute();
}

Я получаю сообщение об ошибке:

Вызов функции-члена setContent() для массива

Я знаю, что он будет работать с findOneby, но тогда я не могу найти запись, которую хочу отредактировать, по двум параметрам.Поэтому я не уверен, что делать сейчас.

Ответы [ 2 ]

1 голос
/ 22 сентября 2019

Если вы используете пользовательский репозиторий , вы должны вернуть getResult () вместо выполнения, попробуйте это:

    $datas = $this->createQueryBuilder('data')
                    ->leftJoin('data.documents', 'dd')
                    ->andWhere('dd.uuid = :documentId')
                    ->andWhere('data.document_id = :dataId')
                    ->setParameter('documentId', $documentId)
                    ->setParameter('dataId', $dataId)
                    ->getQuery()
                    ->getResult();
    return $datas[0];

Если вы уверены, что запрос вернет только одну строку, вы можете вернутьпервый результат.

0 голосов
/ 22 сентября 2019

Я нашел решение:

foreach ($relationEntity as $r) {
     $r->setContent("hello");
}
...