【发布时间】:2022-03-25 02:44:25
【问题描述】:
我为我的模型创建了一个自定义集合,以便为我的集合中的每个项目应用一个函数。
我的控制器对数据进行分页,但似乎自定义集合丢失了所有分页元数据:
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": [...]
}
有没有可能避免这个问题?
【问题讨论】:
-
LengthAwarePaginator 和 Collection 是两个不同的类。