Yii recherche avec des critères et ajouter des paramètres
J'ai un formulaire et je recherche dans ma base de données. J'ai créer l'objet avec tous les paramètres mais j'ai un problème. Lors de l'écriture dans un champ de recherche fonctionne bien et que la requête s'exécute correctement . Lors de l'écrire deux ou plusieurs objets textfield params ne fonctionne pas et j'ai un échec de l'exécution de la requête :
OÙ
((((id_reservation=:id_reservation) ET (démarrer=:démarrer)) ET (=fin:fin)) ET
(fkCustomer.prenom=:prenom))
params ne la remplace pas.
$criteria=new CDbCriteria;
$criteria->with =array('fkCustomer');
if(!empty($start))
{
$criteria->addCondition('start=:start');
$criteria->params=array(':start'=>$start);
}
if(!empty($end))
{
$criteria->addCondition('end=:end');
$criteria->params=array(':end'=>$end);
}
if(!empty($merge->customer_name))
{
$criteria->addCondition('fkCustomer.first_name=:first_name');
$criteria->params=array(':first_name'=>$merge->customer_name);
}
if(!empty($merge->customer_surname))
{
$criteria->addCondition('fkCustomer.last_name=:last_name');
$criteria->params=array(':last_name'=>$merge->customer_surname);
}
if(!empty($merge->customer_email))
{
$criteria->addCondition('fkCustomer.email=:email');
$criteria->params=array(':email'=>$merge->customer_email);
}
$criteria->limit = 100;
Vous devez vous connecter pour publier un commentaire.
C'est parce que dans chaque
if
bloc de remplacer laparams
tableau. Construire un tableau dans leif
blocs, puis l'ajouter à$criteria->params
sur la dernière ligne, à l'extérieur des blocs.Par exemple:
Aussi, si je me souviens bien, vous n'avez pas besoin d'écrire": fin' et ':prenom' dans le
params
tableau, il va travailler sans le côlon.Vous avez également l'alternative suivante
Salut, je pense que c'est le même problème que j'ai avec les params variable, pour éviter ce problème, j'utilise la CMap::mergeArray fonction
cela se produit parce que vous écraser la variable à chaque fois que la condition passée dessus.
C'est la syntaxe pour l'éviter, son un exemple
можно обратиться напрямую