Привет Я использую PHP Silex с Builder запросов Doalrine DBAL (без ORM) и SQLite. Это своего рода работы, поэтому я могу построить запрос, и он отплевывает результаты, но я для жизни меня не могу заставить параметры настройки работать (я получаю пустой массив все время).Параметры Doctrine DBAL не работают
Вот что работает:
$qb->select('*')
->from('photos')
->where("country = '".$country."'")
->andWhere('status = 1')
->orderBy($sort[0], $sort[1])
->setFirstResult($start)
->setMaxResults($limit)
По очевидным причинам я хотел бы заменить это:
$qb->select('*')
->from('photos')
->where("country = ?") /// <--
->andWhere('status = 1')
->orderBy($sort[0], $sort[1])
->setFirstResult($start)
->setMaxResults($limit)
->setParameter(0, $country) /// <--
Или:
$qb->select('*')
->from('photos')
->where("country = :country") /// <--
->andWhere('status = 1')
->orderBy($sort[0], $sort[1])
->setFirstResult($start)
->setMaxResults($limit)
->setParameter(':country', $country) /// <--
Или даже:
$qb = $this->db->createQueryBuilder();
$expr = $qb->expr();
$qb->select('*')
->from('photos')
->where($qb->expr()->andX(
$qb->expr()->eq('country', '?1'), /// <--
$qb->expr()->eq('status', 1)
))
->orderBy($sort[0], $sort[1])
->setFirstResult($start)
->setMaxResults($limit)
->setParameter(1, $country) /// <--
Это все примеры установки параметров, которые я нашел в документах, однако ни один из них не работает, и я не уверен, как отлаживать это. Проверка $ qb-> getSQL() и $ qb-> getParams() не показывает ничего полезного.
Im используя ("doctrine/dbal": "~2.2")
если это имеет значение.
Можете ли вы уточнить, что «похоже, не работает», результаты не возвращаются? – mickadoo
Точно. Нет ошибки. Просто пустой массив результатов. Первый способ возвращает строки, как ожидалось. Только что показали изменения. – konrad
Вы пробовали '-> setParameter ('страна', $ country)' (без двоеточия) – mickadoo