以User
模型为例,模型定义如下:
<?php namespace app\index\model; use think\Model;class User extends Model{ }
如果需要输出当前的模型对象有几种方式。
可以使用toArray
方法把当前的模型对象输出为数组。
修改User
控制器的read
操作方法如下:
// 读取用户数据并输出数组 public function read($id = ''){ $user = UserModel::get($id); dump($user->toArray()); }
访问 http://tp5.com/user/20
页面输出结果为:
array (size=7) 'id' => int 20 'nickname' => string '张三' (length=6) 'email' => string 'zhanghsan@qq.com' (length=16) 'birthday' => string '1988/01/15' (length=10) 'status' => string '待审核' (length=9) 'create_time' => string '2016-05-02 16:40:57' (length=19) 'update_time' => string '2016-05-02 16:40:57' (length=19)
可以看到,User模型的数据已经经过了读取器方法处理。
如果输出的时候需要隐藏某些属性,可以使用:
// 读取用户数据并输出数组public function read($id = ''){ $user = UserModel::get($id); dump($user->hidden(['create_time','update_time'])->toArray()); }
再次访问 http://tp5.com/user/20
页面输出结果变成:
array (size=5) 'id' => int 20 'nickname' => string '张三' (length=6) 'email' => string 'zhanghsan@qq.com' (length=16) 'birthday' => string '1988/01/15' (length=10) 'status' => int 2
或者指定一些属性输出,则可以用:
// 读取用户数据并输出数组public function read($id = ''){ $user = UserModel::get($id); dump($user->visible(['id','nickname','email'])->toArray()); }
再次访问 http://tp5.com/user/20
页面输出结果变成:
array (size=3) 'id' => int 20 'nickname' => string '张三' (length=6) 'email' => string 'zhanghsan@qq.com' (length=16)
如果读取器定义了一些非数据库字段的读取,例如:
<?php namespace app\index\model; use think\Model; class User extends Model{ // status修改器 protected function getUserStatusAttr($value) { $status = [-1 => '删除', 0 => '禁用', 1 => '正常', 2 => '待审核']; return $status[$value]; } }
而我们如果需要输出user_status
属性数据的话,可以使用append
方法,用法如下:
// 读取用户数据并输出数组 public function read($id = ''){ $user = UserModel::get($id); dump($user->append(['user_status'])->toArray()); }
再次访问 http://tp5.com/user/20
页面输出结果变成:
array (size=8) 'id' => int 20 'nickname' => string '张三' (length=6) 'email' => string 'zhanghsan@qq.com' (length=16) 'birthday' => string '1988/01/15' (length=10) 'status' => int 2 'create_time' => string '2016-05-02 16:40:57' (length=19) 'update_time' => string '2016-05-02 16:40:57' (length=19) 'user_status' => string '待审核' (length=9)
对于API
开发而言,经常需要返回JSON
格式的数据,修改read
操作方法改成JSON
输出:
// 读取用户数据输出JSON public function read($id = ''){ $user = UserModel::get($id); echo $user->toJson(); }
访问 http://tp5.com/user/20
页面输出结果为:
{"id":22,"nickname":"张三","email":"zhanghsan@qq.com","birthday":"1988\/01\/15","status":2,"create_time":"2016-05-02 16:40:57","update_time":"2016-05-02 16:40:57"}
或者采用更简单的方法输出JSON
,下面的方式是等效的:
// 读取用户数据直接输出JSON public function read($id = ''){ echo UserModel::get($id); }