使用GII对YII2框架进行CRUD操作

157 阅读6分钟

在靠近用户的地方部署容器

本工程教育(EngEd)计划由科支持。

在全球范围内即时部署容器。Section是经济实惠、简单而强大的。

免费开始

使用GII的YII2框架进行CRUD操作

6月18日, 2021

曾经与数据库打过交道的程序员都有可能使用过CRUD操作。当开发者想要学习任何网络框架时,这些操作是非常重要的。

在这篇文章中,我们将学习如何使用YII 2框架进行CRUD操作。

什么是CRUD?

CRUD的缩写是Create、Read、Update和Delete。

上述各项的功能如下所示。

  1. **创建:**通过执行INSERT 流程创建一条新记录。
  2. **读取:**读取一个单一的记录。
  3. 更新:更新一条记录。
  4. 删除:删除一条记录。

什么是GII?

GII是一个YII模块,为CRUD操作生成代码。在YII 2框架中,GII默认由localhost访问,并且该模块在浏览器中访问。

前提条件

本教程假设你有。

  1. Xampp安装在你的机器上。如果没有,请按照以下步骤进行安装。这将与PhpMyAdmin一起出现,我们将用它来管理我们的数据库记录。

安装Xampp后,将在Linux操作系统中创建一个文件夹/opt/lampp 。我们以后将使用这个文件夹来创建我们的YII项目。

  1. YII 2已经安装。如果没有,请参考本教程,了解如何下载它。

目标

在这篇文章中,我们将做以下工作。

  1. 创建一个名为CRUD的YII项目。
  2. 使用终端创建一个简单的数据库记录。
  3. 使用GII操作CRUD。
  4. 使用GII在数据库中存储数据。

让我们开始吧。

步骤1 - 创建一个YII CRUD项目

  1. 导航到下载YII档案文件的文件夹。在我的例子中,它是在Downloads中下载的。
  2. 将这个归档文件移到/opt/lampp/htdocs 。要移动它,用终端打开Downloads文件夹并输入。
$ sudo mv yii-advanced-app-2.0.42.tgz /opt/lampp/htdocs
  1. 用终端打开/optlampp/htdocs 。输入这个命令来打开。
$ sudo /opt/lampp/htdocs

/optlampp/htdocs ,键入下面的命令。

$ sudo tar -xvzf yii-advanced-app-2.0.42.tgz

这个命令将解压Yii文件并生成一个名为advanced 的新文件夹。

  1. 通过导航到advanced 文件夹。
$ cd advanced

运行下面的命令。

$ sudo php init

这条命令将在advanced 中初始化你的项目。选择选项0。

  1. 要将这个项目重命名为CRUD项目,请打开/opt/lampp/htdocs ,并输入。
$ sudo mv advanced CRUD

你已经创建了一个名为CRUD的YII项目。祝贺你!

请确保在运行你的项目之前启动你的服务器。

通过输入以下命令启动服务器。

$ sudo /opt/lampp/lampp start

点击这里,了解如何启动服务器。

为了验证你已经创建了一个项目,打开你的浏览器并输入http://localhost/CRUD/frontend/web 。这是你应该看到的。

crud project verification

第2步:将CRUD项目与数据库连接起来

用你喜欢的代码编辑器打开CRUD 项目,并导航到common > config > mainlocal.php 。修改代码,使其看起来像这样。

<?php
return [
  'components' => [
      'db' => [
          'class' => 'yii\db\Connection',
          'dsn' => 'mysql:host=localhost;dbname=CRUD',
          'username' => 'root',
          'password' => '',
          'charset' => 'utf8',
      ],
      'mailer' => [
          'class' => 'yii\swiftmailer\Mailer',
          'viewPath' => '@common/mail',
          // send all mails to a file by default. You have to set
          // 'useFileTransport' to false and configure a transport
          // for the mailer to send real emails.
          'useFileTransport' => true,
      ],
  ],
];

在上面的代码中,我们已经把dbname 的名字从yiiadvanced 改为CRUD 。通过这样做,我们已经把我们的项目与数据库连接起来了。

第3步:创建一个简单的数据库记录

现在让我们使用终端在我们的数据库中创建一个表。点击这里了解如何创建一个数据库和一个表,然后创建一个名为CRUD 的数据库和一个名为student 的表。

第四步:使用GII进行CRUD操作

打开你的浏览器,输入http://localhost/CRUD/frontend/web/index.php?r=gii 。如果没有错误,你应该看到一个像下面这样的欢迎页面。

gii_welcome_page

夸奖!你现在已经准备好使用GII模块了。

现在,让我们用GII来为我们的student 表生成代码。

  1. 点击start 上的Model Generator 。这将打开一个类似下面的页面。

model_generator

我们需要填写空白处。让我们来做吧。

表名 -Students

模型类名称 -Students

名称空间--这里我们要把路径从apps\models 改为frontend\models

点击Preview 。你会得到一个像下面这样的页面。

generate

现在点击Generate ,你会在页面的底部看到一个祝贺的说明。

  1. 点击CRUD GENERATOR ,并填写空白处,如下图所示。

crud_generator.png

现在点击Generate 。如果成功了,在底部你会看到 "代码已经生成 "的信息。你还会看到创建的文件列表。

使用GII在数据库中存储数据

在这一点上,我们将开始我们的CRUD操作。

我们的GII现在已经准备好在数据库中存储数据。让我们创建一个简单的记录并将其存储在数据库中。在你的浏览器中打开http://localhost/CRUD/frontend/web/index.php?r=student%2Fcreate

如下图所示,填入空白处,然后点击保存。

create

从缩写CRUD中,我们已经看到了字母C 的功能,即CREATE。点击保存后,我们将使用字母R 的功能,即阅读。

在这里,你将打开一个页面,里面有你创建的所有记录。你应该只有一条记录,因为我们只有一条记录。它应该看起来像下面这样。

read

创建另一条记录,因为当我们进入字母D ,我们将不得不删除一条记录。

在你的数据库中,你应该有这样的记录。

database_record

让我们转到代表更新的字母U 。正如我们前面所说,我们根据主键来更新一条记录。让我们用主键 "1 "来更新我们的第一条记录。点击UPDATE ,更新如下。

update

保存你的更新,并导航到数据库,查看变化。

让我们删除有主键 "2 "的第二条记录。由于你是在记录 "1 "上工作,浏览你的URL,将id从id = 1 改为id = 2 ,刷新你的浏览器。

点击Delete 按钮。然后在你屏幕上出现的确认弹窗上点击Ok

你将只有一条记录,如下图所示。该记录在数据库中也被删除。

delete

哇!...CRUD操作完成了。👏

要查看GII为CRUD的功能所产生的文件,请打开。

  • 视图。
htdocs > CRUD > frontend > views > student
  • 模型。
htdocs > CRUD > frontend > models > Student.php
  • 控制器。
htdocs > CRUD > frontend > controllers > StudentController.php

你可以定制这些文件以满足你的需要。

理解URL

我们的URL看起来相当混乱😕。让我们看看下面这个URL。

http://localhost/CRUD/frontend/web/index.php?r=student%2Fcreate

r 是我们应用程序的路由, 是控制器, 是动作。student create

总结

CRUD是持久性存储的基本操作,对网络应用程序开发员来说非常重要。它节省了开发人员的时间,也减少了开发人员所要写的代码量。

编码愉快!🙂


同行评审的贡献者。Peter Kayere

类似文章

[

How to Create a Reusable React Form component Hero Image

语言

如何创建一个可重复使用的React表单组件

阅读更多

](www.section.io/engineering…

Building a payroll system with next.js Hero Image

语言, Node.js

用Next.js构建一个薪资系统

阅读更多

](www.section.io/engineering…

Creating and Utilizing Decorators in Django example image

架构

在Django中创建和使用装饰器

阅读更多

](www.section.io/engineering…)