Laravel分页附加属性

Laravel分页附加属性,laravel,eloquent,pagination,Laravel,Eloquent,Pagination,我正在将我的搜索功能从php重建到vue 在php中,我常常在模型类中添加属性,例如html标签、缩略图等。 我可以用$model->htmltumb获取它,属性将被加载。 现在,因为我得到了一个json响应,所以这里没有标签。 我知道我可以简单地在模型类上使用$appends属性 问题是属性总是附加的,这是我绝对不想要的 我知道我可以用hideAttributes或类似的东西手动隐藏这些属性,但在现有的应用程序中这样做并不方便 这样它应该可以工作,但现在它返回一个项目数组,而不是paginat

我正在将我的搜索功能从php重建到vue

在php中,我常常在模型类中添加属性,例如html标签、缩略图等。 我可以用
$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上传入的属性名称数组除外。