Database Yii-CDB标准意外结果

Database Yii-CDB标准意外结果,database,yii,frameworks,Database,Yii,Frameworks,我正在做一个简单的查询,基本上是在竞赛id和奖品类型上做一个WHERE子句 $criteria = new CDbCriteria; $criteria->select = 't.*, myuser.firstname, myuser.surname'; $criteria->join ='LEFT JOIN myuser ON myuser.user_id = t.user_id'; $criteria->condition = 't.comp

我正在做一个简单的查询,基本上是在竞赛id和奖品类型上做一个WHERE子句

    $criteria = new CDbCriteria;
    $criteria->select = 't.*, myuser.firstname, myuser.surname';
    $criteria->join ='LEFT JOIN myuser ON myuser.user_id = t.user_id';
    $criteria->condition = 't.competition_id = :competition_id';
    $criteria->condition = 't.prize_type = :prize_type';
    $criteria->params = array(":competition_id" => $competition_id);
    $criteria->params = array(":prize_type" => "1");

    $winners = CompetitionWinners::model()->findAll($criteria);
有人能建议我的代码有什么问题吗。。。我预计大约有4排。。但是超过600

我只是想做

WHERE competition_id = 123 AND prize_type = 1;
是否有一个简单的函数可以简单地为这个CDbCriteria“事件”输出SQL查询?

试试这个

$criteria = new CDbCriteria;
    $criteria->select = 't.*, myuser.firstname, myuser.surname';
    $criteria->join ='LEFT JOIN myuser ON myuser.user_id = t.user_id';
    $criteria->condition = 't.competition_id = :competition_id AND t.prize_type = :prize_type';
    $criteria->params = array(":competition_id" => $competition_id,":prize_type" => "1");
    $winners = CompetitionWinners::model()->findAll($criteria);
或者你可以用


伟大的有没有办法让Yii将此条件作为SQL字符串输出以进行调试?我可以让Yii输出所有内容,但当页面上有这么多其他查询时,这很棘手。很高兴它有所帮助。如果它对你有帮助,请接受它作为回答:呵呵……恐怕我不知道其他的方法。。我还使用同样的技巧来查找执行的查询:再次接受感谢!Yii真的需要某种形式的条件->输出查询:P并可以帮助您调试查询有人能解释为什么这会被否决吗?答案被接受一天后?它确实在某种程度上破坏了社区,而且没有给出一个单一的原因。。
$criteria->addCondition('t.competition_id = :competition_id')
         ->addCondition('t.prize_type = :prize_type');