pro*_*mer 2 php laravel eloquent
我对分页有问题.
一切正常,没有错误,但问题是当我使用makeHidden与我的代码它改变我的json分页结果的结构
这是我的代码
$result = Job::where('user_id','=',Auth::id())->paginate(5);
$result= $result->makeHidden(['hasMessage']);
Run Code Online (Sandbox Code Playgroud)
没有第二行的结果是
{
total: 1 ,
per_page: 5,
current_page: 1,
last_page: 1,
next_page_url: null,
prev_page_url: null,
from: 1,
to: 1,
data: [
{
id: 4,
sid:125,
hasMessage: true
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用的时候
$result= $result->makeHidden(['hasMessage']);
Run Code Online (Sandbox Code Playgroud)
我有
[
{
id: 4,
sid:125,
}
]
Run Code Online (Sandbox Code Playgroud)
有什么想法吗???这是一个错误还是有问题??
hasMessage是一个追加字段而不是真正的列
最后我用小编程技巧做到了
$paginator = Job::where('user_id','=',Auth::id())->paginate(5);
$data = $paginator->makeHidden(['hasMessage']);
$paginator->data = $data;
return $paginator;
Run Code Online (Sandbox Code Playgroud)
谢谢
小智 6
如果要保留分页数据使用getCollection()和setCollection()方法:
$paginator = Job::where('user_id','=',Auth::id())->paginate(5);
$paginator->setCollection($paginator->getCollection()->makeHidden(['hasMessage']));
return $paginator;
Run Code Online (Sandbox Code Playgroud)
toArray()您的代码中缺少您。它应该是这样的:
$result= $result->makeHidden(['hasMessage'])->toArray();
Run Code Online (Sandbox Code Playgroud)
看一下文档:
https://laravel.com/docs/5.4/eloquent-serialization#hiding-attributes-from-json
编辑:
我也尝试过paginate,它确实返回了更改后的数组,这是makeHidden().
您还可以看一下该函数:
public function makeHidden($attributes)
{
$attributes = (array) $attributes;
$this->visible = array_diff($this->visible, $attributes);
$this->hidden = array_unique(array_merge($this->hidden, $attributes));
return $this;
}
Run Code Online (Sandbox Code Playgroud)
当它这样做时,它array_merge会扭曲你的 json 响应。
| 归档时间: |
|
| 查看次数: |
3899 次 |
| 最近记录: |