php - 自定义 laravel 集合丢失分页元数据
问题描述
我为我的模型创建了一个自定义集合,以便为我的集合中的每个项目应用一个函数。
我的控制器对数据进行分页,但似乎自定义集合丢失了所有分页元数据:
class Product extends Model
{
/**
* Create a new Eloquent Collection instance.
*
* @param array $models
*
* @return \Illuminate\Database\Eloquent\Collection
*/
public function newCollection(array $models = [])
{
return new ProductCollection($models);
}
}
class ProductCollection extends Collection
{
public function applyPrice()
{
$productIds = $this->pluck('id')->toArray();
$stockPrice = ...
return $this->transform(function (Product $product) use ($productsStockPrice) {
if (array_key_exists($product->id, $$stockPrice)) {
$product->price = $productsStockPrice[$product->id]['price'] ?? null;
}
return $product;
});
}
}
public function index()
{
$user = auth()->user();
$products = Product::orderBy("name")
->paginate()
->applyPrice($healthcenter);
return HealthcenterProductResource::collection($products);
}
结果 :
{
"data": [...]
}
有没有可能避免这个问题?
解决方案
试试这样:
toQuery()
允许通过管道生成分页paginate
$products = Product::orderBy("name")
->applyPrice($healthcenter)->get()->toQuery()->paginate();
推荐阅读
- swift - MPMediaPickerController 不显示视频
- java - 尽管正确打印出所有输出,但程序未在 Java 中以退出代码 0 结束
- xcode - 在 SwiftUI 中以简单的方式为 TabView tabItem 添加徽章值
- javascript - this.props 不是函数
- google-apps-script - 使用电子表格中给出的名称创建多个 Google 表单副本?
- go - 如何查找窗口的名称
- python - 如何通过 Python 在 Twilio 中编辑“来电”语音网络挂钩?
- pytest - pytest-asyncio 有一个封闭的事件循环,但仅在运行所有测试时
- python - 在直方图 matplotlib jupyter 上展开数据
- bash - 为什么 ">/dev/null" 用于命令行和文件时的工作方式不同?