Я пытаюсь создать объект Builder запроса DBQL и установить в нем параметр. (с использованием postgres db, dbal 2.3.4, доктрины
$connection = $this->_em->getConnection(); $qb = $connection->createQueryBuilder(); $qb->select('tbl_user_contract.pkid AS pkid'); $qb->from('tbl_user_contract', 'tbl_user_contract'); $qb->join('tbl_user_contract', 'tbl_user', 'tbl_user', 'tbl_user_contract.fk_user = tbl_user.pkid'); $qb->where('tbl_user.pkid = :userid'); $qb->setParameter(':userid', 10);
Когда я пытаюсь получить результаты этого объекта querybuilder, я получаю следующую ошибку:
SQLSTATE[08P01]: <<Unknown error>>: 7 ERROR: bind message supplies 0 parameters, but prepared statement "pdo_stmt_00000002" requires 1
Когда я проверяю журналы postgres, я вижу, что запрос проходит, и я замечаю, что он ожидает параметр, но я не получу передаваемый параметр.
Я попытался установить id в выражении where (без использования подготовленных операторов), которое сработало. Но я действительно хочу, чтобы эта работа работала с подготовленными заявлениями.
Кто-нибудь знает, как это решить?
заранее спасибо
Я думаю, вам просто нужно удалить двоеточие из команды setparameter
$qb->setParameter('userid', 10);
По крайней мере, он работает в помощи Doctrine http://docs.doctrine-project.org/en/latest/reference/query-builder.html
Параметр setParameter вашей функции querybuiller неверен. Вам не нужно:, вы можете поместить все это на одну строку, как это, и включить только один тальб в ваш оператор FROM. У вас может быть проблема с вашим JOIN или FROM, если есть другая таблица с именем tbl_user, и вам нужно проверить определения сущности, чтобы убедиться, что аннотации правильные.
$connection = $this->_em->getConnection(); $qb = $connection->createQueryBuilder(); $qb->select('tbl_user_contract.pkid AS pkid') ->from('tbl_user_contract') ->join('tbl_user_contract', 'tbl_user', 'tbl_user', 'tbl_user_contract.fk_user = tbl_user.pkid') ->where('tbl_user.pkid = :userid') ->setParameter('userid', 10);
Обратитесь к документам здесь: http://docs.doctrine-project.org/en/latest/reference/query-builder.html#binding-parameters-to-your-query .