php中取一列数据类型,获取列值:column方法

获取单列或多列字段值:column( )

该方法很有意思,其返回结果由字段数量决定

一个字段:返回一维数组;

二个字段:返回一维数组,第一个字段为键名,第二个字段为元素值;

三个或更多字段:返回二维数组,第一个字段为键名,全部字段值为数据元素;

指定键名:方法的第二个参数,可以自定义结果数组的键名。

可能看上去有点乱,没关系,看上几个实例就明白了。

PHP中文网数据库操作教程:点击查看

1. 说明

该方法原型来自于数据库查询,官方手册只给出column方法的一种使用方法。本节课我们给出其它几种使用方法,与value方法有点像哟~~

废话不讲,直接上实例

2. 实例演示

任务:获取tp5_staff表中,id=1010到1015之间的的员工id,姓名,年龄,工资

模型:/application/index/model/Staff.php

namespace app\index\model;//导入模型类use think\model;class Staff extends model {//自定义模型类代码}

控制器: /application/index/controller/Index.php

同样,我们也像value方法一样提供三种实现方式,除第一种外,其它二种官方手册中并未提及

一、模型静态调用【数据库查询方法】实现:

$result = Staff::where('id','between',[1010,1015])->column('name'); //查看结果

dump($result);

}

}

查询结果:

//单字段返回一维索引数组,键名从0开始自增array(3) {

[0] => string(9) "欧阳峰"

[1] => string(9) "李云龙"

[2] => string(9) "楚云飞"}

二、模型对象调用:

$data = (new Staff)->where('id','between',[1010,1015])->column('id,name'); //查看结果

dump($data);

}

}

查看结果:

//二个字段时,默认取第一个字段名为键名,仍然返回一维数组array(3) {

[1010] => string(9) "欧阳峰"

[1011] => string(9) "李云龙"

[1012] => string(9) "楚云飞"}

我们再得瑟一下,把这个Index.php文件修改一下,看一下四个字段会返回什么?

$data = (new Staff)->where('id','between',[1010,1015])->column('id,name,age,salary'); //查看结果

dump($data);

}

}

查看结果:

//二个以上字段,会返回二维数组//同样,默认取第一个字段为元素键名array(3) {

[1010] => array(4) {

["id"] => int(1010)

["name"] => string(9) "欧阳峰"["age"] => int(28)

["salary"] => float(5400)

}

[1011] => array(4) {

["id"] => int(1011)

["name"] => string(9) "李云龙"["age"] => int(49)

["salary"] => float(10350)

}

[1012] => array(4) {

["id"] => int(1012)

["name"] => string(9) "楚云飞"["age"] => int(39)

["salary"] => float(5300)

}

}

我们再次手贱,修改一下Index.php,试一下自定义数组键名为:name的情况

//column()第二个参数设置了自定义的结果数组的键名:name

$data = (new Staff)->where('id','between',[1010,1015])

->column('id,name,age,salary','name'); //查看结果

dump($data);

}

}

现在查询结果是这种风格:

array(3) {

["欧阳峰"] => array(4) {

["name"] => string(9) "欧阳峰"["id"] => int(1010)

["age"] => int(28)

["salary"] => float(5400)

}

["李云龙"] => array(4) {

["name"] => string(9) "李云龙"["id"] => int(1011)

["age"] => int(49)

["salary"] => float(10350)

}

["楚云飞"] => array(4) {

["name"] => string(9) "楚云飞"["id"] => int(1012)

["age"] => int(39)

["salary"] => float(5300)

}

}

其实不管是多少字段,哪怕只有一个字段,也可以自定义结果中的数组键名。只要这个做键名的字段,在数据表中即可。

三、模型静态调用【模型方法】实现:

<?phpnamespace app\index\controller;//导入模型类use app\index\model\Staff;class Index { public function index(){ $result = Staff::all(['id'=>['between',[1010,1015]]]); foreach ($result as $data){ //getData()可以获取数据对象原始数据:$data属性值 dump($data -> getData());

}

}

}

查询结果与上面略有不同:

array(7) {

["id"] => int(1010)

["name"] => string(9) "欧阳峰"

["sex"] => int(1)

["age"] => int(28)

["salary"] => float(5400)

["dept"] => int(3)

["hiredate"] => string(10) "2013-09-22"}array(7) {

["id"] => int(1011)

["name"] => string(9) "李云龙"

["sex"] => int(1)

["age"] => int(49)

["salary"] => float(10350)

["dept"] => int(1)

["hiredate"] => string(10) "2005-10-20"}array(7) {

["id"] => int(1012)

["name"] => string(9) "楚云飞"

["sex"] => int(1)

["age"] => int(39)

["salary"] => float(5300)

["dept"] => int(1)

["hiredate"] => string(10) "2011-09-12"}

模型静态获取字段值,如果想与colume( )方法一样限制显示字段数量,可以使用闭包来实现。但是与value( )方法不同的是,不能自义定结果中的数组键名。

3. 总结:

在实际开发中,究竟应该用哪套方案,根据你的需求来,如果强调灵活性,显然,前二种方法更加方便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值