zoukankan      html  css  js  c++  java
  • 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' => 'yiidbConnection',
    'dsn' => 'mysql:host=localhost;dbname=digpage',
    'username' => 'root',
    'password' => '1111',
    'charset' => 'utf8',
    ];

    (我用的数据库是digpage,账户密码是root  1111)

    第二步,配置好config中的db后,在models里面创建一个Country.php

    在里面写上

    <?php

    namespace appmodels;

    use yiidbActiveRecord;//类似C++中的声明,必写

    class Country extends ActiveRecord//继承至ActiveRecord类
    {

      //如果模型的命名和表的命名一致时,yii2.0会自动依靠模型命去猜测表名。

      //如果不一样就需要写上下面的话

      /*

      public static function tableName(){

        return '表名';

      }

      */

    }

    第三步,在Controller中创建控制器CountryController.php

    在里面写下如下代码

    <?php

    namespace appcontrollers;

    use yiiwebController;

    use yiidataPagination;

    use appmodelsCountry;

    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 yiihelpersHtml;
    use yiiwidgetsLinkPager;
    ?>
    <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]) ?>//换行用的

    第五步,到浏览器中访问。

    结束,不懂留言我来解答。

  • 相关阅读:
    金融系列4《PUTKEY指令》
    数据分析≠Hadoop+NoSQL,不妨先看完善现有技术的10条捷径(分享)
    ASP.NET对HTML元素进行权限控制(三)
    ASP.NET对HTML元素进行权限控制(二)
    ASP.NET对HTML元素进行权限控制(一)
    作弊控制——心态
    SQL多表连接
    ASP.NET Repeater嵌套Repeater实现菜单加载
    ASP.NET从数据库中取出数据,有数据的复选框为选中
    ASP.NET——拒绝访问。 (异常来自HRESULT:0x80070005 (E_ACCESSDENIED))
  • 原文地址:https://www.cnblogs.com/xiaocongjiejie/p/4662138.html
Copyright © 2011-2022 走看看