Yii框架2.0 数据库操作初接触
Yii2.0和Yii1.1版本的变动还是挺多的,我发现配置文件有许多不同,Yii1.1版本里有个main.php 好多信息是在这里配置的,比如默认控制器,数据库连接信息;Yii的数据库配置被单独拿出来,在config目录下的db.php文件里,格式到时基本一样。
1 return [ 2 'class' => 'yii\db\Connection', 3 'dsn' => 'mysql:host=localhost;dbname=yii', 4 'username' => 'php', 5 'password' => 'php@master', 6 'charset' => 'utf8', 7 ];
例如数据库里有个country的表,那么可以对应的添加一个country的model,其实是有好多的潜规则的。首先如果这个model和表的名字一样就不用做任何操作就可以,如果类名和数据表名不能直接对应,可以覆写 [[yii\db\ActiveRecord::tableName()|tableName()]] 方法去显式指定相关表名。
1 namespace app\models;2 3 use yii\db\ActiveRecord;4 5 class Country extends ActiveRecord {6 7 }
然后就可以在控制器里调用数据了,初步接触几个获取表数据的方法。
1 use app\models\Country; 2 3 // 获取 country 表的所有行并以 name 排序 4 $countries = Country::find()->orderBy('name')->all(); 5 6 // 获取主键为 “US” 的行 7 $country = Country::findOne('US'); 8 9 // 输出 “United States” 10 echo $country->name; 11 12 // 修改 name 为 “U.S.A.” 并在数据库中保存更改 13 $country->name = 'U.S.A.'; 14 $country->save();
这里还有个分页的小工具(widgets)Pagination。在控制器里是这样使用的。
1 $pagination = new Pagination([ 2 'defaultPageSize' => 5,//每页显示数目 3 'totalCount' => $query->count(),//总条目数 4 ]);
在视图里是这样使用的。
1 use yii\widgets\LinkPager; 2 echo LinkPager::widget(['pagination' => $pagination]);