//能操作数据库的model
namespace app\models;
use yii\db\ActiveRecord;
class Country extends ActiveRecord
{
}
<?php
namespace app\models;
use Yii;
use yii\base\Model;
/**
* form表单验证提交,不能操作数据库的Model
*/
class EntryForm extends Model{
public $name;
public $email;
public function rules(){
return [
[['name','email'], 'required'],
['email', 'email']
];
}
}
use app\models\Country;
// 获取 country 表的所有行并以 name 排序
$countries = Country::find()->orderBy('name')->all();
// 获取主键为 “US” 的行
$country = Country::findOne('US');
// 输出 “United States”
echo $country->name;
// 修改 name 为 “U.S.A.” 并在数据库中保存更改
$country->name = 'U.S.A.';
$country->save();
查询数据并分页
<?php
namespace app\controllers;
use yii\web\Controller;
use yii\data\Pagination;
use app\models\Country;
class CountryController extends Controller
{
public function actionIndex()
{
$query = Country::find();
$pagination = new Pagination([
'defaultPageSize' => 5,
'totalCount' => $query->count(),
]);
$countries = $query->orderBy('name')
->offset($pagination->offset)
->limit($pagination->limit)
->all();
return $this->render('index', [
'countries' => $countries,
'pagination' => $pagination,
]);
}
}
前端分页渲染
<?= LinkPager::widget(['pagination' => $pages]); ?>
活动记录 Country::find() 方法,生成查询语句并从 country 表中取回所有数据。 为了限定每个请求所返回的国家数量,查询在 yii\data\Pagination 对象的帮助下进行分页。 Pagination 对象的使命主要有两点:
为 SQL 查询语句设置 offset 和 limit 从句, 确保每个请求只需返回一页数据(本例中每页是 5 行)。
在视图中显示一个由页码列表组成的分页器, 这点将在后面的段落中解释。
在代码末尾,index 操作渲染一个名为 index 的视图, 并传递国家数据和分页信息进去。