序列化
构建Json格式的API接口时,经常需要转换 '模型' 和 '关联关系' 为数组或者JSON。
1>转换模型为数组:
$user = App\User::with('roles')->first(); // 一条记录,是模型实例
return $user->toArray();
2>转换集合为数组:
$users = App\User::all(); // 一个集合,也可以转化为数组
return $users->toArray();
3>转换模型为JSON:
$user = App\User::with('roles')->first(); // 一条记录,是模型实例
return $user->toJson();
4>转换集合为JSON:
$users = App\User::all(); // 一个集合,也可以转化为JSON
return $users->toJson();
5>转换模型或集合为字符串时,将会自动调用 'toJson()' 方法:
$user = App\User::find(1);
return (string) $user; // 强制转换为 string 类型,会自动调用 'toJson',生成json格式字符串
6>由于模型和结合在转换为字符串的时候,会转换为JSON,因此,很多api接口,我们可以直接利用这一特性:
Route::get('users', function(){
return App\User::all();
// 返回时,会自动转换为string格式(这里比上面更简单了,都不用使用 '(string)' 强制转换了)
});