condition dans les critères de yii framework php
$criteria=new CDbCriteria();
$criteria->with = array('reviewCount', 'category10', 'category20', 'category30', 'town');
$criteria->select = 't.id,business,street,postalCode,contactNo,checkinCount,count(tbl_abc.id) as spcount';
$criteria->join = 'left join tbl_abc on t.id=tbl_abc.businessId';
$criteria->group = 't.id';
$criteria->order = 'spcount DESC';
$criteria->condition='spcount>1';
$bizModel = new CActiveDataProvider(Business::model(), array(
'criteria' => $criteria
));
J'obtiens cette erreur:
Column not found: 1054 Unknown column 'spcount' in 'where clause'
Si je omettre la condition de la requête fonctionne bien & les commandes des entreprises, par spcount. Alors, comment dois-je réécrire cette requête telle que je reçois toutes les entreprises dont les spcount est plus grand que 1?
Vous devez vous connecter pour publier un commentaire.
Autant que je sache, vous ne pouvez pas faire référence à des alias dans un
WHERE
partie (la preuve du lien). Suppression de la condition de la ligne et ajouter les éléments suivants:Mise à JOUR
CActiveDataProvider
accepte finder exemple, de sorte que vous aurez besoin d'un modèle de champ:Espère que cela fonctionne
getTotalItemCount
d'appliquer le filtre?getTotalItemCount
a quelque chose commeSELECT COUNT(*) AS cnt ...
? Pourriez-vous poster le SQL qui est utilisé dans cette méthodeVous pourriez peut-être utiliser un sous-select de la requête.
Par exemple dans la partie select de vous les critères de l'objet:
Ou comme une jointure interne (qui peut aussi contenir de la "où spcount>1" condition):
Dans les deux scénarios spcount est également alvailable dans la clause where de la requête. Aussi, le "groupe par t.id" n'est pas plus nécessaire, étant donné spcount est maintenant une valeur unique pour chaque ligne de la table principale ("t").
Espère que cette aide