Попытка загрузить класс «Присоединиться» из пространства имен «DS \ ApiBundle \ Command \ Expr»

Я пытаюсь объединить две таблицы в Symfony. Это дает мне следующую ошибку:

Symfony\Component\Debug\Exception\ClassNotFoundException]
Attempted to load class "Join" from namespace "DS\ApiBundle\Command\Expr". Did you forget a "use" statement for e.g. "Doctrine\ORM\Query\AST\Join" or "Doctrine\ORM\Query\Expr\Join"?

Мой код внизу:

 $student = $this->schoolManager->createQueryBuilder('s')                      
    ->leftJoin('s.schoolId', 'm', Expr\Join::ON ,'s.schoolId = m.school')        
    ->getQuery();

В каждой школе есть члены.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
0
469
1

Ответы 1

добро пожаловать на форум.

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

$student = $this->schoolManager->createQueryBuilder('s')                      
    ->leftJoin('s.schoolId', 'm', 'ON' ,'s.schoolId = m.school')        
    ->getQuery();

of by b) включая оператор использования для соответствующего класса доктрины (в начале вашего класса)

use Doctrine\ORM\Query\Expr;

...

$student = $this->schoolManager->createQueryBuilder('s')                      
    ->leftJoin('s.schoolId', 'm', Expr\Join::ON ,'s.schoolId = m.school')        
    ->getQuery();

это дает мне ошибку как -> Ошибка: класс DS \ AppBundle \ Entity \ School не имеет ассоциации с именем schoolId

shrutid 27.11.2018 12:00

Тогда это будет еще одна проблема - что обычно лучше, поскольку это собственный вопрос. Но, как говорится в ошибке, ваш запрос пытается использовать переменную-член "schoolId" из вашей сущности - но не находит ее (= это не не определено в вашей сущности). Я мог бы предположить, что это должен быть просто «id» (вместо «schoolId»), к которому вы обращаетесь из объекта School, но до тех пор, пока вы не включите код объекта School в свой вопрос, угадывать / предполагать - это единственное Я могу сделать за эту ошибку.

ejuhjav 27.11.2018 14:45

Другие вопросы по теме