Ошибка: неверное выражение пути.Должно быть StateFieldPathExpression, сбой при выборе поля - PullRequest
0 голосов
/ 13 июня 2018

Я использую 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 Ответ

0 голосов
/ 13 июня 2018

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

$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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...