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 的所有行,对于这些行中的每一行,我需要获取idcourseNameskillIdsubjectId列的值。由于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 怎么获取数组形式的数据的主要内容,如果未能解决你的问题,请参考以下文章

js读取的数是数组形式怎么解决

laravel框架(blade模板引擎)

laravel框架总结 -- blade模板引擎

laravel-admin 安装

laravel数据库查询返回的数据形式

我想从 Laravel 5.7 的不同表中获取单个数组中的数据