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了。