2016-08-03 12 views
0

Ich habe diese Abfrage, ich möchte diese Abfrage mit CDbCriteria tun. Modell ist ClogAnfrage in CDBCriteria in Yii schreiben mit Where und Group By-Klausel

SELECT c.id, c.answer, c.number 
FROM `Clog`as c 
WHERE c.company_id =20 
AND date(c.answer) = '2016-04-02' 
GROUP BY c.calls_id 
HAVING count(c.id) <2 

Dies ist, was ich habe versucht, so weit .. ist es eine richtige Art und Weise zu verwenden, wo, GROUPBY, HAVING COUNT .. in CDbCriteria .. Das ist meine Suchfunktion in einem Modell Calls

$criteria = new CDbCriteria(); 
$criteria->select = 'c.id, c.answer, c.number'; 
$criteria->addCondition(' c.company_id='.$this->companyId); 
$criteria->addBetweenCondition(' c.answer', ''.$this->start_date.'', ''.$this->end_date.''); 
$criteria->group = 'c.calls_id'; 
$criteria->limit < 2; 

Irgendwelche Vorschläge, wie dieses Modell in Search-Funktion zu erreichen, weil ich das Ergebnis in CGridView zeigen will ...

+0

In diesem Zusammenhang 'weniger als 2' ist das gleiche wie 'gleich 1', nicht wahr? – Strawberry

+0

Ja '$ criteria-> limit = 1;' –

+0

Können Sie klären, "wie man dies in der Suchfunktion des Modells erreicht"? – Klaus

Antwort

0

das Feld Ihnen Gruppe von „c.calls_id“ sollte in Ihrer select-Anweisung existiert

$criteria->select = 'c.id, c.answer, c.number, c.calls_id'; 

Die richtige Erklärung für "haben" ist, zum Beispiel:

$criteria->having = "count(c.id) < 2"; 
+0

Danke, es hat funktioniert ... –