下面介绍如何使用CakePHP模型来检索数据。有关CakePHP模型的配置,可参考之前一篇文章。检索数据在CakePHP中有一些内置的模型方法(model methods),这些模型方法可以帮助开发者从数据库的表中轻松检索数据。我们将会在之前创建的Book模型身上试验其中一些函数的用法。使用模型来检索数据在很多情况下,我们需要找出符合某一条件的所有数据。在CakePHP中,对数据库进行查询操作都是通过模型的方法来完成的。CakePHP的模型都有一些内置的方法,这些方法可以让开发者不用费多大力气就可以轻松执行这类查询操作。在下面这一部分,我们将会看到一个循序渐进的实例,学习如何在数据库表中检索数据。动手时间:使用模型来检索数据1,在BooksController中去除掉脚手架,然后在控制器中添加一个index操作,代码如下
- <?php
- classBooksControllerextendsAppController{
- var$name=’Books’;
- functionindex(){
- $books=$this->Book->find(‘all’,
- array(
- ‘fields’=>array(‘fields’=>array(
- ‘Book.isbn’,
- ‘Book.title’,
- ‘Book.author_name’
- ),
- ‘order’=>’Book.titleASC’
- )
- );
- $this->set(‘books’,$books);
- }
- }
- ?>
- <table>
- <thead>
- <th>ISBN</th><th>Title</th><th>Author</th>
- </thead>
- <?phpforeach($booksas$book):?>
- <tr>
- <td><?phpecho$book['Book']['isbn']?></td>
- <td><?phpecho$book['Book']['title']?></td>
- <td><?phpecho$book['Book']['author_name']?></td>
- </tr>
- <?phpendforeach;?>
- </table>
- $books=$this->Book->find(‘all’,
- array(
- ‘fields’=>array(
- ‘Book.isbn’,
- ‘Book.title’,
- ‘Book.author_name’
- ),
- ‘order’=>’Book.titleASC’
- )
- );
我们可以通过定义第二个参数中的一些键(像条件,排序,限制)来对find()查询返回的结果进行调整。我们将在后一部分更为详细的学习这一非常实用的方法,第二个参数包含一个关联数组,它有两个键:字段和排序。字段键也是一个数组,它是用来指明find()查询所需要调取的 具体字段。我们只对ISBN书号,书名,以及作者感兴趣。因此字段键的键值被设置成了一个只包含这些字段名称的数组。第二个键order是用来指明查询结果的排序方向。我们把它的键值设置成了Book.title ASC,这是告诉模型按照书名的升序来排序。
所有模型类都会从他们的父类继承一些内置的方法。这些内置方法会让开发者的工作轻松上许多,因为他们再也不用户书写SQL语句了。所有基本的CRUD功能 (创建,读取,更新和删除)以及其他一些功能已经包含在内,我们只需要知道如何使用他们即可。代码看起来会干净上许多,而与数据库打交道不再是一件烦人的 重复性工作。这些简洁而智能的功能会替我们书写SQL查询语句。
- Array
- (
- [0]=>Array
- (
- [Book]=>Array
- (
- [isbn]=>1847192971
- [title]=>BuildingPowerfulandRobust
- withD
- [author_name]=>DavidMercer
- )
- )
- [1]=>Array
- (
- [Book]=>Array
- (
- [isbn]=>1847192823
- [title]=>MasteringJoomla!1.5Extensi
- FrameworkDev
- [author_name]=>JamesKennard
- )
- )
- …
- …
- )
- 使用CakePHP脚手架工具设置数据库和模型PHP老手谈PHP和Python的基础特性 打造PHP的无限分级类(完整代码及注释) 9个开发人员应该知道的PHP库 PHP命名空间规则解析及高级功能









点击购买

