我对分页有问题。
一切工作正常,没有错误,但问题是当我在代码中使用makeHidden时,它会改变我的json分页结果的结构
这是我的代码
$result = Job::where('user_id','=',Auth::id())->paginate(5);
$result= $result->makeHidden(['hasMessage']);
如果没有第二行,结果是
{
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
}
]
}
但是当我使用
$result= $result->makeHidden(['hasMessage']);
我得到了
[
{
id: 4,
sid:125,
}
]
有什么想法吗?是bug还是出了什么问题?
hasMessage是一个追加字段,而不是一个实列
发布于 2017-04-16 22:33:32
最后,我用小编程技巧做到了这一点。
$paginator = Job::where('user_id','=',Auth::id())->paginate(5);
$data = $paginator->makeHidden(['hasMessage']);
$paginator->data = $data;
return $paginator;
谢谢
发布于 2020-03-31 16:52:29
如果希望保留分页数据,请使用getCollection()
和setCollection()
方法:
$paginator = Job::where('user_id','=',Auth::id())->paginate(5);
$paginator->setCollection($paginator->getCollection()->makeHidden(['hasMessage']));
return $paginator;
发布于 2017-04-16 19:23:08
您的代码中缺少toArray()
。它应该是这样的:
$result= $result->makeHidden(['hasMessage'])->toArray();
请看一下文档:
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;
}
因为它正在做array_merge
,所以它分散了你的json响应。
https://stackoverflow.com/questions/43436666
复制相似问题