以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);
}