yii2.0 学习笔记之一 入门2.0

使用数据库

准备数据库

CREATE TABLE `country` (
  `code` CHAR(2) NOT NULL PRIMARY KEY,
  `name` CHAR(52) NOT NULL,
  `population` INT(11) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `country` VALUES ('AU','Australia',18886000);
INSERT INTO `country` VALUES ('BR','Brazil',170115000);
INSERT INTO `country` VALUES ('CA','Canada',1147000);
INSERT INTO `country` VALUES ('CN','China',1277558000);
INSERT INTO `country` VALUES ('DE','Germany',82164700);
INSERT INTO `country` VALUES ('FR','France',59225700);
INSERT INTO `country` VALUES ('GB','United Kingdom',59623400);
INSERT INTO `country` VALUES ('IN','India',1013662000);
INSERT INTO `country` VALUES ('RU','Russia',146934000);
INSERT INTO `country` VALUES ('US','United States',278357000);

数据库中创建一个名为country的表并插入简单的数据

配置数据库连接

config/db.php

<?php

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=yii2basic',
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
];

上面的配置可以在淫中通过Yii::$app->db表达式访问

创建活动记录

models/Country.php

class Country extends ActiveRecord
{
    //
}

这个Country 类继承自yii\db\ActiveRecord。不用在里面写任何代码。yii就能根据类名匹配对应的表名

使用

//获取country表的所有行并以name排序
$contries = 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();

创建动作

class CountryController extends Cotroller
{
    public function actionIndex()
    {
        //从country表中取得所有数据
        //使用Pagnation对象分页
        // index操作渲染一个名为index 的视图,并传递国家数据和分页信息出去
        $query = Country::find();
        $pageination = new Pagination([
            'defaultPageSize' => 5,
            'totalCount' => $query->count(),
        ]);
        $countries = $query->orderBy('name')
        ->offset($pageination->offset)
        ->limit($pageination->limit)
        ->all();

        return $this->render('index', [
            'countries' => $countries,
            'pagination' => $pagination,
        ]);
    }
}

创建视图

views/country/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]) ?>

试运行

yii2.0 学习笔记之一 入门2.0

观察一下,浏览器的url也会变

使用Gii生成代码

gii是yii中的一个模块。可以通过配置应用的modules属性开启它
config/web.php

$config = [ 
    //
];

if (YII_ENV_DEV) {
    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
    ];
}

如果当前是开发环境,应用会包含gii模块,模块类是yii\gii\Module

如果检查应用的入口脚本web/index.php,将看到这行代码将YII_ENV_DEV设为true

defined('YII_ENV') or define('YII_ENV', 'dev');

如此,应用处于开发模式下,按照上面的配置会打开gii模块,可以直接通过url访问gii
如果通过本机以外的机器访问gii,请不说会被出于安全原因拒绝,可以改配置允许访问

'gii' => [
    'class' => 'yii\gii\Module',
    'allowedIPs' => ['127.0.0.1', '::1', '192.168.0.*', '192.168.178.20'] // 按需调整这里
],

yii2.0 学习笔记之一 入门2.0

生成活动记录类

选择model Generator 生成活动记录类 ,填写表单
yii2.0 学习笔记之一 入门2.0

点击preview按钮,models/Country.php会被列在将要生成的文件列表中,点击generator代码会自动生成

生成crud代码

crud代表增查改删操作

yii2.0 学习笔记之一 入门2.0

试运行
yii2.0 学习笔记之一 入门2.0

上一篇:函数


下一篇:ajax模拟获取json