laravel5 怎么获取数组形式的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel5 怎么获取数组形式的数据相关的知识,希望对你有一定的参考价值。
将模型数据转成数组 当构建 JSON API 时,您可能常常需要把模型和关联对象转换成数组或JSON。所以Eloquent里已经包含了这些方法。要把模型和已载入的关联对象转成数组,可以使用 toArray方法: $user = User::with('roles')->first(); return $u 参考技术A 将模型数据转成数组当构建 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数组中定义的值同样遵循模型中 visible和 hidden的设定
在 Laravel 中以数组形式获取数据
【中文标题】在 Laravel 中以数组形式获取数据【英文标题】:Fetch Data as array in Laravel 【发布时间】:2021-11-19 13:06:22 【问题描述】:array:4[
"nb" => 10
"dfs" => 11
"ff" => 9
]
我想从course
表中获取具有userId
值$userId
的所有行,对于这些行中的每一行,我需要获取id
、courseName
、skillId
和subjectId
列的值。由于dd($course)
给了我上述结果,我无法将值分配给任何变量。如何解决这个问题?
$course=Course::where('userId',$userId)->pluck('id','courseName','skillId','subjectId')->toArray();
$data=[];
foreach($course as $row)
$data['skillId']=$row['skillId'];
$data['subjectId']=$row['subjectId'];
【问题讨论】:
试试Course::where('userId',$userId)->select(['id','courseName','skillId','subjectId'])->all()->toArray();
@FatimaMazhit 得到错误call To undefined method Illuminate\\Datbase\\Eloquent\\Builder::all()
哎呀,应该是 get() 而不是 all();
我修好了。谢谢
【参考方案1】:
你需要选择你的字段,在使用 get() 方法获取结果之后,在 toArray() 方法之后转换为数组。
$course = Course::where('userId',$userId)->select(['id','courseName','skillId','subjectId'])->get()->toArray();
【讨论】:
以上是关于laravel5 怎么获取数组形式的数据的主要内容,如果未能解决你的问题,请参考以下文章