доктрина dbal querybuilder как подготовленный оператор

Я пытаюсь создать объект 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 .