2016-01-08 4 views
0

У меня есть следующие объекты:Symfony Доктрина выберите

Применение:

/** 
* Care worker 
* 
* @var CareWorker 
* @ORM\ManyToOne(targetEntity="Sme\CareWorkerBundle\Entity\CareWorker", inversedBy="application", cascade={"persist"}) 
* @ORM\JoinColumn(referencedColumnName="id") 
* 
*/ 
private $careWorker; 

И Careworker:

/** 
* Application 
* 
* @var Application[] 
* @ORM\OneToMany(targetEntity="Sme\CareWorkerBundle\Entity\Application\Application", mappedBy="careWorker", cascade={"persist", "remove"}) 
* 
*/ 
private $application; 

Я пытаюсь получить поле careworker из приложения, используя этот запрос:

$qb=$em->createQueryBuilder() 
     ->select('a.careWorker') 
     ->from('SmeCareWorkerBundle:Application\Application','a') 
    ; 
    $query=$qb->getQuery(); 

    $query->getResult(); 

Я получаю этот запрос исключение

[Semantical Error] line 0, col 9 near 'careWorker FROM': Error: Invalid PathExpression. Must be a StateFieldPathExpression.

Не могли бы вы рассказать мне, как это решить?

+2

Возможный дубликат [Symfony2 и доктрины - Ошибка: неверное выражение пути. Должно быть StateFieldPathExpression] (http://stackoverflow.com/questions/14216470/symfony2-and-doctrine-error-invalid-pathexpression-must-be-a-statefieldpathe) – scoolnico

+0

Вы пытаетесь получить список организаций-работников по уходу ? Вам нужно будет выбрать из careworker вместо приложения. Если вам нужно отфильтровать приложение, присоедините его и примените предложения where. – Cerad

+0

@Cerad Мне нужно получить список приложений, поэтому я могу присоединиться к нему позже с Careworkers, поэтому я могу присоединиться к нему дальше. – Adam

ответ

0

попробовать это:

$qb=$em->createQueryBuilder() 
     ->select('a.careWorker') 
     ->from(Sme\CareWorkerBundle\Entity\Application\Application::class,'a') 
    ; 
    $query=$qb->getQuery(); 

    $query->getResult(); 

быть осторожным к первому арг из "от" Functio

+0

Даже не близко. – Cerad

0

Чтобы получить все приложения и его соответствующие careWorker:

$qb = $em->createQueryBuilder() 
    ->select('a') 
    ->addSelect('cw') 
    ->from('SmeCareWorkerBundle:Application\Application', 'a') 
    ->leftJoin('a.careWorker', 'cw') 
; 

$result = $qb->getQuery()->getResult(); 
+0

Между Careworker и Application У меня есть отношение один к большому. Мне нужно сначала получить все приложения, а затем все соответствующие CareWorker. – Adam

Смежные вопросы