TP5.0.20模型查询 column存在的问题

本文解析了TP5.0.20框架中Model查询使用column方法只返回单列的问题,通过增加额外字段解决了id缺失的错误,并提供了正确的查询和视图展示方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TP5.0.20模型查询 column存在的问题

场景描述

Controller方法中使用如下查询语句去获取2个列id和name的值:

$data=Db::name('category')->where('status',1)->column('id,name');

然后在视图上使用如下代码遍历输出id,name

<select name="category_id" required lay-verify="required">
        <option value="">全部</option>
       {volist name='category' id='ca'}
                <option value="{$ca.id}">{$ca.name}</option>
        {/volist}
 </select>

结果出现错误:Illegal string offset ‘id’

打印出来发现data数组并没有id的值,而仅仅只是name,返回$data如下:

array (
  1 => '种类1',
  2 => '种类2',
  3 => '种类3',
  4 => '种类4',
  5 => '种类5',
)

解决方法

在控制层的查询语句column中再添加一个字段,

$data=Db::name('category')->where('status',1)->column('id,name,status');

打印出来的data如下:

array (
  1 => 
  array (
    'id' => 1,
    'name' => '种类1',
    'status' => 1,
  ),
  2 => 
  array (
    'id' => 2,
    'name' => '种类2',
    'status' => 1,
  ),
  3 => 
  array (
    'id' => 3,
    'name' => '种类3',
    'status' => 1,
  ),
  4 => 
  array (
    'id' => 4,
    'name' => '种类4',
    'status' => 1,
  ),
  5 => 
  array (
    'id' => 5,
    'name' => '种类5',
    'status' => 1,
  ),
)

然后视图就能正常输出结果,如果表中只有2个字段,那么干脆直接用select(),不用column了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值