codecamp

转换成数组 / JSON

将模型数据转成数组

当构建 JSON API 时,您可能常常需要把模型和关联对象转换成数组或JSON。所以Eloquent里已经包含了这些方法。要把模型和已载入的关联对象转成数组,可以使用 toArray方法:

$user = User::with('roles')->first();
return $user->toArray();

注意:也可以把整个的模型集合转换成数组:

return User::all()->toArray();

将模型转换成 JSON

要把模型转换成 JSON,可以使用 toJson 方法:

return User::find(1)->toJson();

从路由中返回模型

注意当模型或集合被转换成字符串类型时会自动转换成 JSON 格式,这意味着您可以直接从路由返回 Eloquent 对象!

Route::get('users', function()
{
    return User::all();
});

转换成数组或 JSON 时隐藏属性

有时您可能想要限制能出现在数组或 JSON 格式的属性数据,比如密码字段。只要在模型里增加 hidden 属性即可

class User extends Model {
    protected $hidden = ['password'];
}

注意: 要隐藏关联数据,要使用关联的方法名称,而不是动态获取的属性名称。

此外,可以使用 visible 属性定义白名单:

protected $visible = ['first_name', 'last_name'];

有时候您可能想要增加不存在数据库字段的属性数据。这时候只要定义一个获取器即可:

public function getIsAdminAttribute()
{
    return $this->attributes['admin'] == 'yes';
}

定义好获取器之后,再把对应的属性名称加到模型里的 appends 属性:

protected $appends = ['is_admin'];

把属性加到 appends 数组之后,在模型数据转换成数组或 JSON格式时就会有对应的值。在 appends数组中定义的值同样遵循模型中 visiblehidden的设定。

模型 URL 生成
建立与删除数据表
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

环境配置

系统服务

哈希

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }