Yii2.0学习第8课:一个简单的例子
1、运行LNMP环境,进入Mysql,贴入以下代码:
CREATE TABLE IF NOT EXISTS `member` ( `id` mediumint(8) unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, `username` char(25) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `member` (`username`) VALUES('name1'),('name2'),('name3'),('name4'),('name5'),('name6'),('name7'),('name8'),('name9'),('name10');
我们可以查看到新建的member表及数据:



2、创建了数据库,下面应该是创建数据库连接,这个我在前面的经验中有所介绍,请查看百度经验:https://jingyan.baidu.com/article/ea24bc39f5a883da63b33159.html
3、我们思考一下MVC的哪一层是用于链接数据库的,肯定是model,有的时候也称呼为“活动记录(Active Record)”,严格来讲,model和Active Record是不同的两种:
(1)yii\base\Model 被用于普通模型类的父类并与数据表无关;
(2)yii\db\ActiveRecord 通常是普通模型类的父类但与数据表有关联,它继承yii\base\Model,而且增加了数据库处理;

4、我们在前面讲到控制器ID的说明,ModelID的形式和Controller ID 其实是一样的,参看百度经验https://jingyan.baidu.com/article/495ba841c4001438b20ede73.html
在basic\models目录下创建Member.php(因为我们的数据表是member)贴彩囊新入以下代码:
<?php
namespace app\models;
use yii\db\ActiveRecord;
class Member extends ActiveRecord
{
}

5、接下来我们创建控制器层(C层),在controllers目录下创建MemberController.php文件,并贴入以下代码:
<?php
namespace app\controllers;
use yii\web\Controller;
use app\models\Member;
class MemberController extends Controller
{
public function actionIndex{
$result = Member::find()->all();
var_dump($result);
}
}
然后使用浏览器访问,查看效果近菌:



6、接下里我们引入一下“分页类”,并创建视图文件,并需改MemberController.php文件:
<?php
namespace app\controllers;
use yii\web\Controller;
use app\models\Member;
use yii\data\Pagination;
class MemberController extends Controller
{
public function actionIndex(){
$query = Member::find();
$pagination = new Pagination([
'defaultPageSize'=>3,
'totalCount'=>$query->count(),
]);
$names = $query->offset($pagination->offset)->limit($pagination->limit)->all();
return $this->render('index',['names'=>$names,'pagination'宿宋=>$pagination]);
}
}
然后我们使用浏览器访问该控制器,发现缺少视图文件,同时提示了试图文件所在目录:


7、在views目录下创建member目录,并在member目录下创建文件index.php,
贴入以下代码:
<?php
use yii\helpers\Html;
use yii\widgets\LinkPager;
?>
<ul>
<?php foreach ($names as $name): ?>
<li>
<?= Html::encode("{$name->username}") ?>:
</ul>
<?= LinkPager::widget(['pagination' => $pagination]) ?>
然后再次使用浏览器访问,查看效果:


8、至此,一个简单的例子就结束了,我们通过按照MCV的顺序一步一步的讲解,希望对你有所帮助。