ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## 创建数据库 ~~~ /* 创建数据库 */ DROP DATABASE IF EXISTS yii2basic; CREATE DATABASE yii2basic DEFAULT CHARACTER SET UTF8MB4; USE yii2basic; /* 创建明星表 */ DROP TABLE IF EXISTS yii_star; CREATE TABLE yii_star( star_id INT PRIMARY KEY AUTO_INCREMENT, star_name VARCHAR(10), star_desc VARCHAR(50), star_age INT ) ENGINE = INNODB DEFAULT CHARSET = UTF8MB4; INSERT INTO yii_star VALUES(NULL, '刘德华', '歌手', 50); INSERT INTO yii_star VALUES(NULL, '郭富城', '歌手', 49); INSERT INTO yii_star VALUES(NULL, '张学友', '歌手', 48); INSERT INTO yii_star VALUES(NULL, '黎明', '歌手', 47); INSERT INTO yii_star VALUES(NULL, '梁朝伟', '演员', 50); INSERT INTO yii_star VALUES(NULL, '金城武', '演员', 49); INSERT INTO yii_star VALUES(NULL, '孙红雷', '演员', 48); INSERT INTO yii_star VALUES(NULL, '邓超', '逗逼', 47); ~~~ ## 配置数据库 > F:\wwwroot\Yii\basic\config\db.php ~~~ <?php return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=yii2basic', 'username' => 'root', 'password' => '', 'charset' => 'utf8mb4', ]; ~~~ 确保在web.php中已经加载了数据库的配置文件 > F:\wwwroot\Yii\basic\config\web.php ![](https://box.kancloud.cn/2015-11-22_56514c0d8d20e.png) ## 活动记录类 > 就是针对某个表可以进行增删改查的类 文件地址:`F:\wwwroot\Yii\basic\models\Star.php` 文件内容: ~~~ <?php namespace app\models; use yii\db\ActiveRecord; // 明星类 class Star extends ActiveRecord{ // 设置表名 public static function tableName(){ return "yii_star"; } } ~~~ ## 模型表单类 > F:\wwwroot\Yii\basic\models\StarForm.php ~~~ <?php namespace app\models; use yii\base\Model; // 明星表单 class StarForm extends Model{ // 姓名 public $nick; // 介绍 public $desc; // 年龄 public $age; // 规则 return [ [["nick", "age"], "required"] ]; } ~~~ ## 控制器动作 > F:\wwwroot\Yii\basic\controllers\SiteController.php 引入模型和表单 ~~~ use app\models\Star; use app\models\StarForm; use yii\data\Pagination; ~~~ 其中Pagination是用于处理分页的一个类 在控制器中追加动作代码 ~~~ // 明星动作 public function actionStar(){ // 行为判断 $ac = !isset($_REQUEST["ac"]) ? "" : $_REQUEST["ac"]; switch ($ac) { // 新增数据 case "insert": return "insert"; // 修改数据 case "update": return "update"; // 查询数据 default: // 所有明星 $query = Star::find()->where("star_age >= 47"); // 分页对象 $page = new Pagination([ // 每页数量 "defaultPageSize" => 5, // 总共数量 "totalCount" => $query->count() ]); // 排序截断并返回本页的数据 $stars = $query->orderBy("star_age ASC")->offset($page->offset)->limit($page->limit)->all(); // 返回内容 return $this->render("star\index", [ "starList" => $stars, "page" => $page ]); } } ~~~ ## 视图文件 > F:\wwwroot\Yii\basic\views\site\star\index.php ~~~ <?php // 引入类 use yii\helpers\Html; use yii\widgets\LinkPager; // 设置标题 $this->title = "明星列表"; ?> <h1>所有明星的列表</h1> <ul> <?php foreach($starList as $star): ?> <li> <p>姓名:<strong><?= Html::encode("{$star->star_name}");?></strong></p> <p>介绍:<?= Html::encode("{$star->star_desc}");?></p> <p>年龄:<i><?= Html::encode("{$star->star_age}");?></i></p> </li> <?php endforeach; ?> <!-- 分页数据 --> <?= LinkPager::widget(["pagination" => $page]); ?> </ul> ~~~ ## 测试结果 http://127.0.0.1/index.php?r=site/star ![](https://box.kancloud.cn/2015-11-22_56514c0da9100.png)