Я пытаюсь объединить две таблицы в 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();
В каждой школе есть члены.




добро пожаловать на форум.
Вы можете исправить эту ошибку, а) просто используя строковое представление выражения соединения:
$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();
Тогда это будет еще одна проблема - что обычно лучше, поскольку это собственный вопрос. Но, как говорится в ошибке, ваш запрос пытается использовать переменную-член "schoolId" из вашей сущности - но не находит ее (= это не не определено в вашей сущности). Я мог бы предположить, что это должен быть просто «id» (вместо «schoolId»), к которому вы обращаетесь из объекта School, но до тех пор, пока вы не включите код объекта School в свой вопрос, угадывать / предполагать - это единственное Я могу сделать за эту ошибку.
это дает мне ошибку как -> Ошибка: класс DS \ AppBundle \ Entity \ School не имеет ассоциации с именем schoolId