使用CakePHP脚手架工具设置数据库和模型
CakePHP脚手架工具主要是用来设置数据库和模型的。下面介绍这个CakePHP脚手架工具的操作原理及方法。
我们已经知道,模型类通常都是用来与数据库进行互动的。在CakePHP中,一个模型类通常都对应数据库中的莫个表。所有对表进行的数据库操作都是通过对应的模型类来实施的。CakePHP的模型与数据库表之间的对应关系无需设置。相反,CakePHP使用了一些简单的命名规则来实现这一效果,在这一部分,我们将了解到如何为数据库中的表的创建对已的模型类。CakePHP提供了一个名为"脚手架"工具来帮助我们检查先前创建好的模型和数据库表。我们也将了解到如何使用“脚手架”功能完成这一工作。
为数据库中的表创建模型
在了解模型类是如何与数据库表进行互动之前,我们首先要创建一个数据库表。在接下来这一部分中,我们首先将创建一个数据库表,然后了解如何为这个表创建一个模型类。然后我们也会使用脚手架功能对新创建的模型和数据表进行一个快速的测试。
动手时间:创建一个数据库表以及对应的模型
1,在MySQL命令提示行中,我们输入如下数据库命令来创建一个名为data-access的新数据库。
CREATE DATABASE `data-access`;
2,通过执行下面的SQL语句来创建一个“books”表:
USE `data-access`; CREATE TABLE `books` ( `id` int( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `isbn` varchar( 10 ) NOT NULL , `title` varchar( 127 ) NOT NULL , `description` text NOT NULL , `author_name` varchar( 127 ) NOT NULL )
3,将一份全新的CakePHP文件夹放置到你的网页根目录下。将Cake的文件夹重命名为data-access.
4,进入Cake安装文件夹下的/app/config目录。你找到一个名为 database.php.default的文件。将这个文件重命名为database.php。使用你喜欢的编辑器打开它。编辑文件中的$default数组以配置好你的数据库。在编辑好之后,它看起来应该跟下面这段内容差不多
var $default = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'port' => '', 'login' => 'username', 'password' => 'password', 'database' => 'data-access', 'schema' => '', 'prefix' => '', 'encoding' => '' );
5,现在,在你的浏览器中输入如下地址http://localhost/data-access。浏览器会显示以一个“CakePHP已经能够与数据库进行连接”的信息,我们就此可以确认数据库的配置非常完美。如果配置不对的话,它会显示一个"Cake无法与数据进行连接”的信息。如果碰到这种情况,又很有可能是你提供的数据库信息不正确。立刻返回到第四步,使用正确的数据库名称,数据库用户名和密码来填写$default数组
6,在/app/models文件夹下创建一个新的PHP文件,将其命名为book.php
7,在book.php文件中,添加如下代码:
<?php class Book extends AppModel { var $name = 'Book'; } ?>
8,现在在 /app/controllers文件夹下另外创建一个PHP文件,将其命名为books_controller.php
9,在books_controller.php文件中添加如下代码:
<?php class BooksController extends AppController { var $name = 'Books'; var $scaffold; } ?>
10,现在,使用浏览器打开这个地址http://localhost/data-access/books/,添加一些测试数据。
怎么回事?
首先,我们创建了一个名为data-access的数据库。接着,我们在这个数据库中创建了一个名为books的数据库表。books表的结构如下:
我们这里使用的数据库表名和字段名并不是随意选取的。CakePHP对于数据库表和字段的命名都有确定的命名规则:
◆表名必须是复数形式的英文小写(像boooks,catergories,articles等等)
◆如果需要使用两个以及两个以上的单词来对表和字段进行命名,我们需要使用下划线来把单词分开(像author_name,user_photos等)
◆数据库表中的字段必须有一个名为id的主键
在我们这个例子中,我们使用的数据库表名books是英文复数形式。我们也有一个名为id的主键。我们需要使用两个单词来对表的第5个字段进行命名――author_name,我们使用下划线来连接这两个单词。
[ 如果你之前写过PHP/MySQL的应用程序,那么你可能会以你自己喜欢的方式对数据库表进行命名,然后写SQL语句来访问这些数据库。但是,当你使用CakePHP时,你应该遵循它的命名规则。虽然我们不一定要完全遵循它的命名规则,但是对规则的遵守会帮助我们省下不少宝贵的时间。此外,坚持这一规则通常都能提高代码的质量和可维护性。通过本书的这一章节和其他章节,我们将会看到CakePHP的这些规则是如何帮我们以一种更便捷更酷的方式完成事情的。 ]
我们的数据库已经准备就绪,我们已经对我们的应用做好配置,并且连接到数据库了。在第三章中,我们已经学习过如何对我们的应用进行配置,以便连接的数据库。在完成数据库配置后,我们开始为我们的模型编写代码。
我们已经知道,在CakePHP中,模型类都通常都被用来访问对应的数据库表,因此,要访问books表,我们需要创建对应的模型类。CakePHP对于模型类和模型文件有固定的命名规则。具体规则如下:
◆模型的文件名必须用对应数据库的表名来命名,但是是单数形式。比如,如果你的数据表名是user_photos,那么模型的文件名就应该是user_photo.php
◆模型的类名应该是模型文件名的骆驼拼写形式( CamelCased form)。如果我们的模型文件名称是user_photo.php,那么模型的类名就应该是UserPhoto
◆模型文件都放置在 /app/models目录下。
[ CakePHP会通过命名规则自动了解到哪个模型类对应哪个数据库的表。在我们这个例子中,我们模型的类名称Book暗示它对应的数据库表是books表。看,多省事,我们无需对此做什么手动设置。 ]
然后我们创建了一个名为Book的模型类,然后将类文件命名为book.php,并将其保存在 /app/models 文件夹下,因为我们正确的遵循了命名规则,CakePHP现在会自动检测到我们的Book类是数据库表books所对应的模型类。
一旦我们创建好数据库表和模型,我们就能使用CakePHP的脚手架功能创建出一个能进行数据库基本操作(比如,添加,编辑,和删除操作)的简单应用程序来。在对Book模型使用脚手架功能之间,我们首先需要创建一个相关的控制器类BooksController。然后我们在控制器类里面添加了一行变量$scaffold 。这一短短的代码将会为数据库表books所对应的Book模型搭建一个脚手架――没错,就是这么简单!
访问这个链接 http://localhost/data-access/books/,CakePHP脚手架功能已经为我们创建了一个带有添加,读取,更新和删除功能的基本应用。在添加一些数据后,页面的模样应该如下图: