우리 모두 알고 있듯이
modelName::model() -> find() //찾은 것은 객체입니다.
modelName::model() -> findALL() // 찾은 것은 객체 컬렉션의 배열입니다
모든 필드의 데이터가 아닌 필요한 필드의 데이터를 찾는 방법
전에 이 작업을 했습니다
$criteria = new CDbCriteria; $criteria->select = 'username,id,email'; $criteria->order = 'id DESC'; $users = modelName::model()->findAll( $criteria );
우연히 뒤에서 누군가가 이런걸 쓰는 걸 보고 제가 얼마나 무지했는지 깨달았습니다
아아아테스트해본 결과 작동하는 걸 확인했으니 find도 작동 가능하네요 이런 식으로
$users = modelName::model()->findAll(array( 'select' =>array('username','id','email'), 'order' => 'id DESC', ));
물론 다음 방법도 사용할 수 있습니다.
$user = modelName::model()->find(array( 'select' =>array('username','id','email'), 'order' => 'id DESC', 'condition' => 'id='.$id, ));
마찬가지로, findAll로 테스트할 수도 있습니다. 결론
물론 페이지 매김이 필요한 경우 다음 CDbCriteria에 new가 필요합니다.
예를 들어, videoinfo 테이블에서 'v_id', 'title', 'big_class', 'sub_class', 'upload_time', 'comment_num' 및 기타 필드를 꺼내고 싶고 조건은 status=1입니다. lastmodifytime을 역순으로 따르세요. 그리고 3개 항목만 꺼내십시오.
$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);
이면 충분합니다.
이렇게 하면 $result 변수가 결과가 됩니다. 이는 개체 목록이며 순회해야 합니다.
$criteria -> condition = 'status = :status';
예를 들어 각 필드를 표시하려면
foreach ($result as $ob){ print_r($ob->attributes); }
<🎜를 입력하면 됩니다. >
등 이 완성되었습니다. CPagination 클래스는 CDbCriteria 클래스 및 프런트 엔드 페이징 플러그인과 함께 사용할 수 있습니다.$ob->attributes['title'];
$count =VideoInfo::model()->count($criteria) $pages=new CPagination($count); $pages->pageSize=30; //每页分多少条 $pages->applyLimit($criteria);