ご存知の通り
modelName::model() -> find() // 見つかったのはオブジェクトです
modelName::model() -> findALL() // 見つかったのはオブジェクトの配列ですコレクション
すべてのフィールドのデータではなく、必要なフィールドのデータを見つける方法は?
テストした結果、動作することがわかったので、この方法でも find を操作できます
$criteria = new CDbCriteria; $criteria->select = 'username,id,email'; $criteria->order = 'id DESC'; $users = modelName::model()->findAll( $criteria );
もちろん、これを行うのは絶対に安全ではありませんが、次のメソッドで置き換えることもできます
$users = modelName::model()->findAll(array( 'select' =>array('username','id','email'), 'order' => 'id DESC', ));
同様に、findAll でテストすることもできます。結論
このメソッドは、必要なデータを簡単に取得できます。もちろん、ページネーションが必要な場合は、引き続き次の CDbCriteria を作成する必要があります
たとえば、 videoinfo テーブルの 'v_id'、'title'、'big_class'、'sub_class'、'upload_time'、'comment_num' などのフィールド、条件は status=1、lastmodifytime を逆順にたどって 3 つだけを取り出すコメントアウトした行は、変数を渡すことができ、プレースホルダーで表されます。たとえば、変数に従って条件付きでステータスを割り当てる必要がある場合は、コメント行に値を割り当てることができます。次に、条件条件に
$user = modelName::model()->find(array( 'select' =>array('username','id','email'), 'order' => 'id DESC', 'condition' => 'id='.$id, ));
を記述します。
この方法で、$result 変数を取得します。取得した結果は、トラバースする必要があるオブジェクトのリストです。$users = $this->user->find(array( 'select'=>array('id','username','email'), 'order' => 'id DESC', 'condition' => 'state=:state AND id=:id', 'params' => array(':state'=>'1',':id' => '2'), ));
$criteria = new CDbCriteria() ; $criteria -> select = array('v_id','title','big_class','sub_class','upload_time','comment_num'); $criteria -> condition = 'status = 1'; $criteria -> order = 'lastmodifytime desc'; $criteria -> limit = 3; $criteria ->params = array (':status' => $你的变量) ; $result = VideoInfo::model()->findAll($criteria);
$criteria -> condition = 'status = :status';
foreach ($result as $ob){ print_r($ob->attributes); }