Avant de commencer à présenter les composants Zii, présentons brièvement l'interface de source de données IDataProvider prise en charge par Yii. La fonction principale de IDataProvider est de fournir des sources de données pour les composants de l'interface utilisateur tels que GridView, ListView, etc., et prend également en charge la pagination et le tri. de données. La figure suivante montre les trois sources de données intégrées dans Yii :
Source de données basée sur un enregistrement actif CActiveDataProvider
Source de données basée sur un tableau CArraryDataProvider
CSqlDataProvider basée sur une requête SQL source de données
L'utilisation des trois fournisseurs de données est similaire :
CActiveDataProvider 基于ActiveRecord, 它通过AR的 CActiveRecord::findAll方法读取数据库记录,并通过 criteria属性设置查询条件。 如: $dataProvider=new CActiveDataProvider('Post', array( 'criteria'=>array( 'condition'=>'status=1', 'order'=>'create_time DESC', 'with'=>array('author'), ), 'pagination'=>array( 'pageSize'=>20, ), )); // $dataProvider->getData() will return a list of Post objectsCArrayDataProvider 基于数组,其中属性 rawData设置原始数据,一般为数组或者DAO查询结果,如: $rawData=Yii::app()->db->createCommand ('SELECT * FROM tbl_user')->queryAll(); // or using: $rawData=User::model()->findAll(); $dataProvider=new CArrayDataProvider($rawData, array( 'id'=>'user', 'sort'=>array( 'attributes'=>array( 'id', 'username', 'email', ), ), 'pagination'=>array( 'pageSize'=>10, ), )); // $dataProvider->getData() will return a list of arrays.CSqlDataProvider 基于SQL查询,通过设置 sql 语句来配置,比如: $count=Yii::app()->db->createCommand('SELECT COUNT(*) FROM tbl_user')- >queryScalar(); $sql='SELECT * FROM tbl_user'; $dataProvider=new CSqlDataProvider($sql, array( 'totalItemCount'=>$count, 'sort'=>array( 'attributes'=>array( 'id', 'username', 'email', ), ), 'pagination'=>array( 'pageSize'=>10, ), )); // $dataProvider->getData() will return a list of arrays.
Ce qui précède est le contenu du tutoriel du framework de développement PHP Yii Framework ( 28) Introduction au fournisseur de données, et plus Pour le contenu associé, veuillez faire attention au site Web PHP chinois (www.php.cn) !