yii2.0操作数据库
首先不得不说yii2.0面向对象的比较彻底,建议没学过或者没学好面向对象的同学再看看面向对象。
其次切入正题。
先创建数据库,这步自己写。
DROP TABLE IF EXISTS `country`;
CREATE TABLE IF NOT EXISTS `country` (
`code` char(2) NOT NULL,
`name` char(52) NOT NULL,
`population` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- 转存表中的数据 `country`
--
INSERT INTO `country` (`code`, `name`, `population`) VALUES
('AU', 'Australia', 18886000),
('BR', 'Brazil', 170115000),
('CA', 'Canada', 1147000),
('CN', 'China', 1277558000),
('DE', 'Germany', 82164700),
('FR', 'France', 59225700),
('GB', 'United Kingdom', 59623400),
('IN', 'India', 1013662000),
('RU', 'Russia', 146934000),
('US', 'United States', 278357000);
第一步,配置config中的db文件相关属性,
<?php
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=digpage',
'username' => 'root',
'password' => '1111',
'charset' => 'utf8',
];
(我用的数据库是digpage,账户密码是root 1111)
第二步,配置好config中的db后,在models里面创建一个Country.php
在里面写上
<?php
namespace app\models;
use yii\db\ActiveRecord;//类似C++中的声明,必写
class Country extends ActiveRecord//继承至ActiveRecord类
{
//如果模型的命名和表的命名一致时,yii2.0会自动依靠模型命去猜测表名。
//如果不一样就需要写上下面的话
/*
public static function tableName(){
return '表名';
}
*/
}
第三步,在Controller中创建控制器CountryController.php
在里面写下如下代码
<?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();//查询数据库中,类似select * from ... 也可以这样写 $query=Country::findBySql('SELECT * FROM ...')
$pagination = new Pagination([
'defaultPageSize' => 5,
'totalCount' => $query->count(),
]);
$countries = $query->orderBy('population')
->offset($pagination->offset)
->limit($pagination->limit)
->all();
return $this->render('index', [
'countries' => $countries,
'pagination' => $pagination,
]);
}
}
第四步,创建视图
建一个county文件夹,文件夹内建一个index.php
内容
<?php
use yii\helpers\Html;
use yii\widgets\LinkPager;
?>
<h1>Countries</h1>
<ul>
<?php foreach ($countries as $country): ?>
<li>
<?= Html::encode("{$country->name} ({$country->code})") ?>:
<?= $country->population ?>
</li>
<?php endforeach; ?>
</ul>
<?= LinkPager::widget(['pagination' => $pagination]) ?>//换行用的
第五步,到浏览器中访问。
结束,不懂留言我来解答。