魔法查询函数

魔法查询函数通常被用作对数据库表特定字段进行搜索的一种便捷方式。在先前的一个例子中,我们要搜索一本ISBN书号为 1234567890的书。我们是使用find()方法执行搜索任务的。但是我们也可以像下面这样使用魔法查询函数来完成同样的任务:

$book = $this->Book->findByIsbn('1234567890');

这种方法明显要简短一些,而且它会进行跟之前find()实例完全一样的查询。

findBy<字段名>()函数是由CakePHP动态创建的。这个魔法函数是在findBy(这是骆驼拼写法的形式)后面添加上我们想搜索的数据库表的字段名而构成的。

findBy<字段名>函数的基本结构如下:

findBy<字段名>(值, 字段名, 排序)(其中值的数据类型是字符串,字段的数据类型是数组,排训的数据类型是字符串)

第一个参数 $value(值)是指我们所需找查找的字段值。第二个参数$fields(字段)是一个数组,其中包含查询应该返回的字段名称。第三个参数是 $order(排序)指定了结果的排序。跟find('first')一样,findBy<字段名称>() 函数只会返回符合指定条件的第一条记录。

魔法查询函数的另一种形式类似于find(‘all’)方法——它会返回所有符合给定条件的记录。这个函数有一个findAllBy前缀,基本的形式如下:

findAllBy<字段名>(值, 字段, 排训,返回结果的数量)(其中值的数据类型是字符串,字段的数据类型是数据,排训的数据类型是字符串,返回结果数量的数据类型是整数)

findAllBy<字段名>() 函数会返回所有指定字段值等于第一个参数$value(值)的记录,第二个参数和第三个参数与findBy<字段名>() 函数的一样。第四个参数 $limit 是用来指定查询返回的结果数量限制。

现在,让我们看看findAllBy<字段名>() 函数的简单实例。请回想一下之前的一个例子,在那个例子中我们要搜索出所有由 'David Barnes' 撰写并按照书名排序的所有书的标题。我们也可以使用神奇的findAllBy<字段名>() 函数来达到同样的效果,像下面这样:

$books = $this->Book->findAllByAuthorName('David Barnes', array('Book.title'),'Book.title ASC'));

findBy<字段>()函数和findAllBy<字段>() 函数的输出结果是一个数组,这些结果的格式分别与 find('first')和 find('all')方法获得的结果相一致。


读取单个字段

在某些情况下,我们只想读取一条记录中的单个字段。尽管我们也可以使用find()方法来实现这点。但是CakePHP针对此类任务提供了一种更简单完成方法,比如,要获取ISBN书号为 1904811299的书的书名,我们可以在BooksController中使用如下代码:

$this->Book->field('title', array('isbn' => '1904811299'));

field()方法的构成形式如下:

field(string $name, string $conditions, string $order)

field() 方法只会返回第一条记录中$name参数指定的单个字段的值。第二个参数$conditions定义了查询条件,而第三个参数$order定义了结果的排序方式。

现在,在这一章节,我们学习了如何使用CakePHP的模型方法从数据库表中检索数据。但是如何数据库中没有数据的话,数据检索也毫无意义。而向数据库中保存数据则是我们下一步将要学习的内容。

转载于:https://www.cnblogs.com/iplus/archive/2012/02/16/4490023.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jupyter魔法函数是一种特殊的命令,可以在Jupyter Notebook中执行特定的操作或提供额外的功能。魔法函数以%或%%开头,分为行魔法函数和单元格魔法函数两种类型。 1. 行魔法函数:以%开头,作用于单行代码。 - %run:运行外部Python脚本。 - %load:加载外部Python脚本到单元格中。 - %timeit:计算单行代码的执行时间。 - %debug:进入交互式调试器。 - %reset:重置命名空间中的变量、名称和命名空间。 - %who:列出当前命名空间中的所有变量。 - %whos:详细列出当前命名空间中的所有变量。 - %history:显示命令历史记录。 2. 单元格魔法函数:以%%开头,作用于整个单元格。 - %%time:计算整个单元格的执行时间。 - %%writefile:将单元格中的内容写入文件。 - %%html:将单元格中的内容解释为HTML代码并在输出中显示。 - %%bash:在单元格中运行Bash命令。 - %%capture:捕获并隐藏单元格中的输出。 下面是一个示例,演示了如何使用魔法函数: ```python # 运行外部Python脚本 %run script.py # 计算单行代码的执行时间 %timeit sum(range(1000)) # 重置命名空间中的变量 %reset -f # 列出当前命名空间中的所有变量 %who # 计算整个单元格的执行时间 %%time for i in range(1000): print(i) # 将单元格中的内容写入文件 %%writefile myfile.txt This is a test file. # 在单元格中运行Bash命令 %%bash ls -l # 捕获并隐藏单元格中的输出 %%capture print("Hello, World!") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值