value 方法这个方法比较简单,这里快速带大家过一遍,重点讲手册没有提及的参数默认值
1、功能: 获取单条记录某个字段的值
2、源码:/thinkphp/library/think/db/Query.php
4、参数和返回值该方法允许传入二个参数:序号参数说明1字段名当前记录中存在的字段名称
2默认值当查询失败时,返回该值返回值:mixed(任意类型),由字段值类型决定。
如字段值是数字,则返回数值型,字符串则返回字符类型,以此类推;
无返回值时,则返回事先设定的默认值,后面有详细的实例演示。
5、适用环境:针对单条记录有意义 ,多条记录也只返回第一个记录对应的字段值
6、实例演示:当前表tp5_staff 中数据如下:
1. 查询id = 1007 的记录中的name值Index.php 源代码:<?php
namespace app\index\controller;
use think\Db;
class Index {
public function demo1(){
//查询单条记录中某个字段的值,如果失败,可设置输出默认值
$result = Db::table('tp5_staff') //设置数据表tp5_staff
->where('id=1007') //设置查询条件id=1007
->value('name','查无此人'); //查询字段值,如无则输出:查无此人
//输出查询结果
dump($result);
}
}查询结果:string(9) "潘金莲" //字符串类型,对应的值是:潘金莲,对照表可知查询成功对应的SQL语句:SELECT `name` FROM `tp5_staff` WHERE ( id=1007 ) LIMIT 1
2. 查询id = 1107 的记录中的name值注意:当前表中并无id=1107的记录,我们看一下无返回值时,如何处理?我们根据条件修改一下Index.php 源代码:<?php
namespace app\index\controller;
use think\Db;
class Index {
public function demo1(){
//查询单条记录中某个字段的值,如果失败,可设置输出默认值
$result = Db::table('tp5_staff') //设置数据表tp5_staff
->where('id=1107') //设置查询条件id=1107
->value('name','查无此人'); //查询字段值,如无则输出:查无此人
//输出查询结果
dump($result);
}
}查询结果:string(12) "查无此人"
//当前表中,并无id=1107的记录返回值,因此结果为假,这时输出我们事先设定的默认值,给客户一个人性友好的提示信息对应的SQL语句:SELECT `name` FROM `tp5_staff` WHERE ( id=1107 ) LIMIT 1
3. 查询id > 1007 的所有记录中的name值当给定条件是一个区间范围时,常理推断应该返回一个数组,是不是这样呢?看实例:修改Index.php 源代码中where条件:<?php
namespace app\index\controller;
use think\Db;
class Index {
public function demo1(){
//查询单条记录中某个字段的值,如果失败,可设置输出默认值
$result = Db::table('tp5_staff') //设置数据表tp5_staff
->where('id > 1007') //设置查询条件id 大于 1007
->value('name','查无此人'); //查询字段值,如无则输出:查无此人
//输出查询结果
dump($result);
}
}分析:查看tp5_staff表,因为id为正整数,所以 id 大于 1007 的第一条记录是 id =1008 ,而 id=1008 记录对应的name值是:宋江运行结果:string(6) "宋江" //输出id = 1008 记录对应 name字段值相应的SQL语句:SELECT `name` FROM `tp5_staff` WHERE ( id > 1007 ) LIMIT 1结论:
1.value方法只能返回单记录查询结果中的指定的字段值;
2.当返回多个满足条件的记录时,也只获取第一条满足条件的记录对应字段值。如果想获取全部满足条件的字段值,就要用下面的:column方法啦