有关数据检索的更多内容-Php-优质IT资源分享社区

admin
管理员
管理员
  • UID1
  • 粉丝29
  • 关注4
  • 发帖数581
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:218回复:0

  有关数据检索的更多内容

楼主#
更多 发布于:2016-05-31 16:54

咱们现已知道运用模型内置办法find()对数据库表进行数据检索的根本办法。find()办法确实十分强壮,而且咱们能够运用它来完结杂乱的查询。咱们将会学习更多有关find()办法的内容,了解怎么经过它来履行杂乱的查询。咱们也将学习怎么运用CakePHP供给的别的数据检索

有关数据检索的更多内容

咱们现已知道运用模型内置办法find()对数据库表进行数据检索的根本办法。find()办法确实十分强壮,而且咱们能够运用它来完结杂乱的查询。咱们将会学习更多有关find()办法的内容,了解怎么经过它来履行杂乱的查询。咱们也将学习怎么运用CakePHP供给的别的数据检索窍门。

有关find()办法的更多内容

find()

办法十分灵敏,它能够完结SQL语言中SELECT查询句子所能完结的一切成果。比方,咱们只检索书名以字母“A"最初并依照ISBN书号降序摆放的前两本书的书号字段和作者名字字段,咱们曾需求写出下面这个SQL查询句子:

SELECT `Book`.`isbn`, `Book`.`title`,

`Book`.`author_name`

FROM `books` AS `Book`

WHERE `Book`.`title` LIKE 'A%'

ORDER BY `Book`.`isbn` DESC

LIMIT 2;

在CakePHP中,咱们能够经过像下面这么运用find()办法来得到相同的成果。

find(

'all',

array(

'conditions' => array('Book.title' => 'LIKE

A%'),

'fields' => array(

'Book.isbn',

'Book.title',

'Book.author_name'

),

'order' => 'Book.isbn DESC',

'limit'=>2

)

);

[

在条件(condition)中,为字段添加上模型称号前缀(像写成Book.title而非title)是一个极好的习气。当咱们需求调取相关模型中的数据而且成果中有相同的字段称号时,这个习气就特别重要。别的它也改善了代码的新鲜度

]

find()办法承受两个参数:$type(类型)和$constraints(束缚)。$type(类型)是一个用来界说查询“类型”的字符串。$type能够设成下面这三种类型中的一个

all:find办法会依照给定的排序办法和个数束缚回来一切契合条件的记载。

first:这个办法只回来契合束缚条件的首条记载

count:会回来查询成果中所包括记载的总数量。

正如咱们从上一个比如中所看到那样,咱们能够以相关数组(associative

array)的形式在第二个参数 $constraints中指定别的查询束缚。$constraints参数的相关数组能够有如下键(key)

conditions(条件):条件(conditions)可应用于替代查询句子中的WHERE子句。默认值是1=1,这表示没条件束缚。

fields(字段):查询成果应当回来的字段规模。假如没有指明,它会回来一切字段。当find()函数的第一个参数$type被设置成count时,该参数不可用。

order(排序):这个字符串界说了查询句子中ORDER

BY子句的内容。假如order排序没有指明,那么SQL查询中将不会添加有ORDER BY子句。查询类型是count是,该参数也不可用。

limit(束缚):该整数指明晰回来记载的最大数量。假如没指定limit,那么函数会回来一切契合条件的记载。只有当查询类型是all时,它才可用。

offset(偏移值):这个参数界说了首个回来记载的偏移值。默认值是0.只有当type参数是all时,该设置才有用。

为了便于读者更清楚地了解这个概念,咱们将会迅速阅读下面这些表明晰find()用法的比如:

1,假如你想知道书名以字母“A”最初的书的数目,咱们会在BooksController(Books控制器中)添加如下代码:

$count = $this->Book->find('count',

array('conditions' =>

array('Book.title' => 'LIKE A%'));

It executes the following SQL query:

它会履行如下SQL查询

SELECT COUNT(*) AS `count` FROM `books` AS `Book`

WHERE

`Book`.`title` LIKE 'A%';

当find()办法的$type参数设置成count时,查询回来的成果是一个整数。在这个比如中,

$count变量的值可能是2.

2,假如咱们想查询id最大书本所对应的书号(ISBN)和书名,咱们会运用下面这个代码

$book = $this->Book->find('first',

array(

'fields' => array('isbn', 'title'),

'order' => 'Book.id DESC'

)

);

该代码会履行如下SQL句子

SELECT `Book`.`isbn`, `Book`.`title` FROM `books`

AS `Book`

WHERE 1 = 1 ORDER BY `Book`.`created` DESC LIMIT

1;

储存在$book变量中的成果会是下面这个姿态:

Array

(

[Book] => Array

(

[isbn] => 1847192971

[title] => Building Powerful and Robust

Websites

with Drupal 6

)

)

3,假如你想找出某个作者所写的所得书并依照书名来排序,那么下面这个代码能够达到此意图:

$books = $this->Book->find('all',

array(

'fields' => array('title'),

'conditions' => array(

'Book.author_name' => 'LIKE David Barnes'

),

'order' => 'Book.title ASC'

)

);

上面这段代码将会履行下面这个SQL查询

SELECT `Book`.`title` FROM `books` AS `Book` WHERE

`Book`.`author_

name` LIKE 'David Barnes' ORDER BY

`Book`.`title` ASC

上面这段查询会回来如下的成果:

Array

(

[0] => Array

(

[Book] => Array

(

[title] => How to write computer books

)

)

[1] => Array

(

[Book] => Array

(

[title] => How not to write a technical

book!

[

请注意,find()办法的$type参数分别被设置成

first和all时,回来的成果会有所区别。当它被设置成first时,回来的数组是一个相关数组,其中包括有书的信息。当类型参数被设置成all时,

回来的是一个相关数组的数组,每个相关数组内包括有一本书的相关信息

]

在上面这些比如中,咱们学习了find()办法中运用的一些十分简略的条件束缚。在实际的应用程序中,查询所用的条件要杂乱的多,可能会带有很多嵌套条件以及各种类型的逻辑和条件运算符。咱们接下来将会重视$constraints参数中的condition键,并学习怎么运用find()来完结一些杂乱的工作。

优质IT资源分享社区为你提供此文。

本站有大量优质php教程视频,资料等资源,包含php基础教程,高级进阶教程等等,教程视频资源涵盖传智播客,极客学院,达内,北大青鸟,猎豹网校等等IT职业培训机构的培训教学视频,价值巨大。欢迎点击下方链接查看

php教程视频

优质IT资源分享社区(www.itziyuan.top)
一个免费,自由,开放,共享,平等,互助的优质IT资源分享网站。
专注免费分享各大IT培训机构最新培训教学视频,为你的IT学习助力!

!!!回帖受限制请看点击这里!!!
!!!资源失效请在此版块发帖说明!!!

[PS:按 CTRL+D收藏本站网址~]

——“优质IT资源分享社区”管理员专用签名~

本版相似帖子

游客