Yiiでnot equalのSQLを発行するには

Yiiで

select * from hoge where status=1;

のようなSQLを発行するときは、

$datas=$model->findAll('status=:status',array(':status'=>1));

のようにする。

select * from hoge where status!=1;

なら、

$datas=$model->findAll('status!=:status',array(':status'=>1));

とう感じ。findAllの第1引数にCDbCriteriaを使うなら

select * from hoge where status=1;

の場合は、

$criteria=new CDbCriteria;
$criteria->compare('status',1);

$datas=$model->findAll(criteria);

という感じ。

select * from hoge where status!=1;

なら、

$criteria=new CDbCriteria;
$criteria->condition='status!=:status';
$criteria->params=array(':status'=>1);

$datas=$model->findAll(criteria);

という感じになる。
なお、取得するカラムを指定したいとか、ソートをかけたいという場合は、CDbCriteriaを使う必要がある。例えば、

select id,name from hoge where status!=1 order by id limit 5;

なら

$criteria=new CDbCriteria;
$criteria->condition='status!=:status';
$criteria->params=array(':status'=>1);
$criteria->select = array('id','name');
$criteria->order='id';
$criteria->limit=5;

$datas=$model->findAll(criteria);

となる。

※参考
findAll
CDbCriteria

投稿日:
カテゴリー: php タグ: