SORU
8 Mayıs 2011, Pazar


Nasıl NEREDE Doktrin 2 ile kullanmak için

Bana hata veren aşağıdaki kodu var:

Message: Invalid parameter number: number of bound variables does not match number of tokens 

Kod:

public function getCount($ids, $outcome)
{
    if (!is_array($ids)) $ids = array($ids);
    $qb = $this->getEntityManager()->createQueryBuilder();
    $qb->add('select', $qb->expr()->count('r.id'))
        ->add('from', '\My\Entity\Rating r');
    if ($outcome === 'wins') $qb->add('where', $qb->expr()->in('r.winner', array('?1')));
    if ($outcome === 'fails') $qb->add('where', $qb->expr()->in('r.loser', array('?1')));
    $qb->setParameter(1, $ids);
    $query = $qb->getQuery();
    //die('q = ' . $qb);
    return $query->getSingleScalarResult();
}

(Ya $ID) veri:

Array
(
    [0] => 566
    [1] => 569
    [2] => 571
)

Sonuç DQL:

q = SELECT COUNT(r.id) FROM \My\Entity\Rating r WHERE r.winner IN('?1')

CEVAP
12 HAZİRAN 2011, Pazar


Bu sorun için araştırma yaparken, herkes için önemli, aynı sorun haline çalıştırmak ve bir çözüm arıyor olacak bir şey buldum.

Orijinal yazı, kod aşağıdaki satırı:

$qb->add('where', $qb->expr()->in('r.winner', array('?1')));

Bir dizi olarak adlandırılmış parametre sarma parametre numarası bağlı sorun neden olur. Onun diziden kaldırarak kaydırma:

$qb->add('where', $qb->expr()->in('r.winner', '?1'));

Bu sorunun düzeltilmesi gerekir. Bu Doktrin önceki sürümlerinde bir sorun olabilir ama 2.0 En son sürümlerinde düzeltilmiştir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ADDVOiCE

    ADDVOiCE

    28 Mayıs 2009
  • Alexey - servant of Christ

    Alexey - ser

    15 EYLÜL 2007
  • MusicDeluxeTV

    MusicDeluxeT

    14 Mayıs 2010