评论
【BuildAdmin】curd配置数组接口返回字符串格式,如何转化成json数组格式

【BuildAdmin】curd配置数组接口返回字符串格式,如何转化成json数组格式

做选择是需要练习的,选择是一种培养出来的能力。做选择的次数越多,你就越会选择。 ---罗伯特·弗里茨-

在buildadmin中crud配置了数组格式数据-【BuildAdmin】curd配置数组接口返回字符串格式,如何转化成json数组格式

接口

但是在接口中返回的数据是字符串格式,这是因为我们之前学习中都是原始的方式直接查询数据,导致了返回最基础的格式

public function topicmen()
{   
     $data = Db::name('topic_classify')->order('weigh','desc')->select();
     $this->success('查询成功', $data);
}

转化

builadmin中模型有对数组转成json的格式化处理,因此我们接口应该使用模型方式

public function topicmen()
{   
      // 使用模型类以利用其JSON转换功能
      $model = new \app\admin\model\topic\Classify();
      $data = $model->order('weigh','desc')->select();

      $this->success('查询成功', $data);
}

区别

Db::name('topic_classify')->order('weigh','desc')->select();

   - 这是直接使用数据库查询构造器

   - 返回原始数据库记录,不经过任何模型处理

   - 不应用模型中定义的类型转换、访问器或修改器

   - type_tag 字段保持数据库中的原始字符串格式

new \app\admin\model\topic\Classify();

   - 通过模型类查询,会应用模型中定义的所有特性

   - 模型中定义了 'type_tag' => 'json' 类型转换

   - 模型中有 getTypeTagAttr 访问器将JSON字符串转为数组

   - type_tag 字段会被自动转换为PHP数组

因此,虽然两者都查询同一个表,但使用模型类会应用框架的类型转换功能,而直接使用Db类则不会