Laravel分页附加属性
我正在将我的搜索功能从php重建到vue 在php中,我常常在模型类中添加属性,例如html标签、缩略图等。 我可以用Laravel分页附加属性,laravel,eloquent,pagination,Laravel,Eloquent,Pagination,我正在将我的搜索功能从php重建到vue 在php中,我常常在模型类中添加属性,例如html标签、缩略图等。 我可以用$model->htmltumb获取它,属性将被加载。 现在,因为我得到了一个json响应,所以这里没有标签。 我知道我可以简单地在模型类上使用$appends属性 问题是属性总是附加的,这是我绝对不想要的 我知道我可以用hideAttributes或类似的东西手动隐藏这些属性,但在现有的应用程序中这样做并不方便 这样它应该可以工作,但现在它返回一个项目数组,而不是paginat
$model->htmltumb
获取它,属性将被加载。
现在,因为我得到了一个json响应,所以这里没有标签。
我知道我可以简单地在模型类上使用$appends
属性
问题是属性总是附加的,这是我绝对不想要的
我知道我可以用hideAttributes或类似的东西手动隐藏这些属性,但在现有的应用程序中这样做并不方便
这样它应该可以工作,但现在它返回一个项目数组,而不是paginator集合
$results=$db\u query->paginate($num\u of\u results)->附录($result)->每个函数($project){
$result->setAppends([
“项目描述”,
“FileCountLabel”,
]);
});
我正在寻找一种正确的方法。我刚刚用一个ResourceCollection修复了它,如下所示:
OP接受的答案是正确的,而且有效,但我想提出一个有两个优点的替代答案:
它避免了为每个模型类型和附加属性的每个组合创建新的ResourceCollection
来自分页器的响应的格式将与来自$db\u query->paginate($num\u of\u results)
(默认情况下,ResourceCollection会将分页元数据移动到响应中的两个子对象中,links
和meta
,这意味着需要重构使用API的代码)
其想法是创建一个通用ResourceCollection,它允许我们动态控制附加属性:
app/Resources/appendeablepaginator.php
我在使用之前解决了这个问题。Hmmm看起来很有趣,我们将对此进行研究!您应该使用append()
而不是setAppends()
,显然setAppends()
将取消设置/删除模型文件的$appends
属性中设置的所有其他属性,在Laravel v8.x上传入的属性名称数组除外。