Yah*_*din 3 laravel laravel-5 laravel-5.1
我有以下代码:
$orders = Order::all();
return $orders;
Run Code Online (Sandbox Code Playgroud)
这返回如下内容:
[
{
"id": 123,
"qr_code": "foo.png",
"qr_code_url": "http://example.com/foo.png"
},
{
"id": 112,
"qr_code": "bar.png",
"qr_code_url": "http://example.com/var.png"
}
]
Run Code Online (Sandbox Code Playgroud)
请注意,这qr_code_url是一个附加属性,而不是存储在数据库中的属性.
我希望将此集合返回给没有属性的用户:qr_code在这种情况下.像这样:
[
{
"id": 123,
"qr_code_url": "http://example.com/foo.png"
},
{
"id": 112,
"qr_code_url": "http://example.com/var.png"
}
]
Run Code Online (Sandbox Code Playgroud)
看看收集功能,我似乎无法找到一个简单的方法:https: //laravel.com/docs/5.4/collections
我发现的唯一函数接近我想要的是:except而且forget,它们似乎只是在一维数组上工作.不是模型返回的集合结果.
我怎样才能解决我的问题?
Eli*_*res 11
您可以将属性设置为隐藏在模型类上(请参阅从Json隐藏属性)
/**
* The attributes that should be hidden for serialization.
*
* @var array
*/
protected $hidden = ['qr_code'];
Run Code Online (Sandbox Code Playgroud)
该属性仍将加载,但不会显示在您的集合中.
如果您不想使其永久化,您可以使用makeHidden()文档中描述的雄辩方法:
暂时修改属性可见性
如果您想在给定的模型实例上显示一些通常隐藏的属性,则可以使用makeVisible方法.makeVisible方法返回模型实例以方便方法链接:
Run Code Online (Sandbox Code Playgroud)return $user->makeVisible('attribute')->toArray();同样,如果您希望在给定的模型实例上隐藏一些典型的可见属性,则可以使用makeHidden方法.
Run Code Online (Sandbox Code Playgroud)return $user->makeHidden('attribute')->toArray();
$eloquentCollection->transform(function (Model $result) use ($forgetThisKey) {
$attributes = $result->getAttributes();
unset($attributes[$forgetThisKey]);
$result->setRawAttributes($attributes, true);
return $result;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9445 次 |
| 最近记录: |