0

CDbCriteria と CActiveDataProvider でこのクエリを実行するにはどうすればよいですか?

'SELECT * FROM tbl_post where title LIKE %'.$title.'% ORDER BY title LIKE '.$title.' DESC , title LIKE '.$title.'% DESC'

更新: 最後に私はこれを書きました:

$criteria = new CDbCriteria;
                    $criteria->addCondition('title LIKE :title');                        
                    $criteria->params = array(':title'=>'%'.$title.'%',':t1'=>$title,':t2'=>$title.'%');;
                    $criteria->order='title LIKE :t1 DESC , title LIKE :t2 DESC';

しかし、私はエラーが発生しました:

CDbCommand failed to execute the SQL statement: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens. The SQL statement executed was: SELECT COUNT(*) FROM `tbl_post` `t` WHERE title LIKE :title
4

2 に答える 2

0

比較句を使用してみてください。'order by x like' が必要かどうかはわかりません。

<?php
$criteria = new CDbCriteria;
$criteria->compare('title', $title, true);
$criteria->order = 'title DESC';
$dp = new CActiveDataprovider('posts', array(
  'criteria' => $criteria
));
于 2012-12-06T21:16:25.917 に答える
0

これは次のように実現できます。

    $dataProvider=new CActiveDataProvider('tbl_post', array(
    'criteria'=>array(
    'condition'=>'title LIKE % '.$title.' %',
    'order'=>'title DESC',
    ),
   ));

    $dataProvider->getData();

参照:ヘルプ

ありがとう。

于 2012-12-07T09:01:27.100 に答える