Ошибка: неверное выражение пути. Должно быть StateFieldPathExpression, сбой при выборе поля

Я использую createQueryBuilder для создания запроса, как это

$result = $qb->select('csr.id,csr.survey')
->from('Entity\ClientSurveyRecord', 'csr')
->innerJoin('Entity\AbstractClientRecord','cr','WITH','cr.id = csr.id')
->innerJoin('Entity\Client','c','WITH','cr.client = c.id')
->where('csr.survey = :id_survey')
->setParameter('id_survey',$id)
->getQuery()
->getResult();

И я получаю следующее сообщение Тип: Doctrine \ ORM \ Query \ QueryException

Message: [Semantical Error] line 0, col 18 near 'survey FROM Entity\ClientSurveyRecord': Error: Invalid PathExpression. Must be a StateFieldPathExpression.

Filename: /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/Query/QueryException.php

Но если я изменю $qb->select('csr.id,csr.survey') за $qb->select('csr.id') оно работает

это файл сопоставления

Entity\ClientSurveyRecord:
type: entity
table: clients_survey_records

fields:

result:
type: integer
column: result
nullable: false
options:
comment: Client survey current result.

manyToOne:
survey:
targetEntity: Entity\AbstractSurvey
joinColumn:
name: id_survey
referenceColumnName: id
nullable: false

surveyShipmentTracking:
targetEntity: Entity\SurveyShipmentTracking
joinColumn:
name: id_survey_shipment_tracking
referenceColumnName: id
nullable: false

1

Решение

Вам нужно объединить свои отношения, используя их сопоставленные свойства, как для опроса, вам нужно присоединить это в своем объекте построителя запросов.

$result = $qb->select(['csr.id','s']) // or add column names ['csr.id','s.id','s.title', ...]
->from('Entity\ClientSurveyRecord', 'csr')
->innerJoin('csr.survey','s')
->innerJoin('Entity\AbstractClientRecord','cr','WITH','cr.id = csr.id')
->innerJoin('Entity\Client','c','WITH','cr.client = c.id')
->where('s.id = :id_survey')
->setParameter('id_survey',$id)
->getQuery()
->getResult();

Также было бы хорошо, если вы присоединитесь Entity\AbstractClientRecord а также Entity\Client используя некоторые сопоставленные свойства, как вы уже сделали для опроса, например,

$result = $qb->select(['csr.id','s'])
->from('Entity\ClientSurveyRecord', 'csr')
->innerJoin('csr.survey','s')
->innerJoin('csr.abstractClientRecord','cr')
->innerJoin('cr.client','c')
->where('s.id = :id_survey')
->setParameter('id_survey',$id)
->getQuery()
->getResult();
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]