2013-04-15 12 views
7

Birçok denemeden sonra, sonunda belgeleri kalpten biliyorum.Doktrin setiParametre ve Geçersiz parametre numarası

geçersiz parametre sayısı: ciltli değişkenlerin sayısı

İşte

olan jeton sayısıyla eşleşmiyor Sonra , ben Doktrin bana bu hatayı göstermek neden anlamıyorum .. yardımına ihtiyacım kodum:

$qb = $this->em->createQueryBuilder(); 
$qb->select('m') 
    ->from('Entities\Marque', 'm') 
    ->leftJoin('m.magasin', 'ma') 
    ->where('m.nom = :marque AND ma.nom LIKE :magasin') 
    ->setParameter('marque', $marque) 
    ->setParameter('magasin', '%'.$matchesNumber[1].'%'); 
$results = $qb->getQuery()->getArrayResult(); 

Cevabınız için şimdiden teşekkür ederiz.

+6

Belki daha sonra db-> 'yi arayabiliyor musunuz? Bu, mevcut nerede bildirimin üzerine yazılır. – sroes

+0

Hayır, burada ifadenin kullanıldığı tek kullanım. –

+0

$ marque' ve '$ matchesNumber [1]' null değil mi? – cheesemacfly

cevap

7

Çok üzgünüm .. Sadece hatamı buldum .. Daha sonra, daha sonra kodlarımda .. Eski "$ qb" ile yeni bir sorgu yazdım .. Ben bir noob! yanlışlıkla bir kez başıma birden fazla where(), kullanırsanız

+0

@sroes was sağ o zaman :) – Ejaz

+0

Tam olarak! O haklıydı ^^ –

8

Varsayalım -> setParameter öncekini geçersiz kılar. Birden Parametreler için

kullanın:

->setParameters(['key1' => $value1, 'key2' => $value2]) 

bakınız Doktrini Yükseltme: Şu andan itibaren

, sorguları parametreler yerine basit bir dizinin bir ArrayCollection olduğunu. Bu, setParameters() 'ın kullanımını büyük ölçüde etkiler, çünkü sorgulamak için artık parametreler eklemez, ancak aslında önceden tanımlanmış olanları geçersiz kılar. Bir> parametrenin çekilmesi olduğumuz zamanlarda (yani. $ query-> getParameter (1))

Doctrine Upgrade Description

Belki bu da setParameter için de geçerlidir?

+0

Zaten denedim -> setParameters (['marque' => $ marque, 'magasin' => '%'. $ EşleşmelerNumara [1]. '%']); Ama hiçbir değişiklik .. –

4
$qb = $this->em->createQueryBuilder(); 
$parameters = array('marque'=>$marque, 'magasin'=>'%'.$matchesNumber[1].'%'); 
$qb->select('m') 
    ->from('Entities\Marque', 'm') 
    ->leftJoin('m.magasin', 'ma') 
    ->where('m.nom = :marque') 
    ->andWhere('ma.nom LIKE :magasin') 
    ->setParameters($parameters); 

$results = $qb->getQuery()->getArrayResult(); 
10

Bu aynı zamanda gerçekleşir.

$em = $this->getEntityManager(); 
$query = $em->createQueryBuilder() 
    ->from('AppBundle:SomeEntity', 's') 
    ->select('s') 
    ->where('s.foo = :foo') 
    ->where('s.bar = :bar') // <- HERE 
    ->setParameter('foo', 'Foo Value') 
    ->setParameter('bar', 'Bar Value'); 

olmalı: Bu kimse yardımcı

$em = $this->getEntityManager(); 
$query = $em->createQueryBuilder() 
    ->from('AppBundle:SomeEntity', 's') 
    ->select('s') 
    ->where('s.foo = :foo') 
    ->andWhere('s.bar = :bar') // <- CHANGE TO andWhere() 
    ->setParameter('foo', 'Foo Value') 
    ->setParameter('bar', 'Bar Value'); 

Umut.

İlgili konular