При первом использовании doctrine в проекте, и у меня возникли некоторые проблемы с конструктором запросов.
Сначала в контроллере я использовал следующее:
$conn = $this->get('database_connection');
$users = $conn->fetchAll('SELECT * FROM Users');
Это сработало нормально и возвращает массив пользователей из моей БД.
Затем я попытался использовать построитель запросов, чтобы получить имена всех пользователей.Просматривая примеры, я обнаружил следующее:
$conn = $this->get('database_connection');
$qb = $conn->createQueryBuilder();
$qb->select("forename")
->from("Users", "u")
->where("u.id = :user_id")
->setParameter('user_id', 1);
$query = $qb->getQuery();
$results = $query->getResults();
Мне сказали, что метод gDoctrine \ DBAL \ Query \ QueryBuilder :: getQuery () не определен, что я нашел странным, поскольку почти все примеры, которые янашел его использовать.
Я выполнил поиск и нашел Документацию к доктрине , но теперь я совсем не понимаю, как его использовать.
Кто-нибудь будет достаточно любезен, чтобы датьПример использования вышеизложенного для извлечения имени пользователя с идентификатором 1. Я уверен, что когда у меня будет простой пример, который будет работать, все будет в порядке.
Спасибо!
Теперь решено: просмотрев документацию (и с помощью других), я обнаружил, что общий макет queryBuilder выглядит следующим образом:
$conn = $this->get('database_connection');
$qb = $conn->createQueryBuilder();
$stmt = $qb->select("forename")
->from("Users", "u")
->where("u.id = :user_id")
->setParameter('user_id', 1)
->execute();
$userNames = $stmt->fetchAll();
Общая идея заключается в том, что метод execute возвращаетa Doctrine \ DBAL \ Driver \ Statement с параметрами, установленными как указано.Из этого утверждения вы можете вызвать один из различных методов, указанных здесь , чтобы получить результаты из БД.
Надеюсь, это поможет кому-то еще, у кого возникли проблемы!