[英]Filter a model before you create an resource Collection
我正在尋找一種方法,使我的ProductResource Collection 僅包含具有有效價格的產品。
在我的routes/api.php
中,我這樣使用Collection :
Route::get('/product', function (Request $request) {
return new ProductCollection(
Product::all()
);
});
在 model App\Models\Product
中存在價格關系
public function prices () {
return $this->hasMany(ProductsPrice::class);
}
在App\Models\ProductsPrice
中有一個 scopeIsActive 我想在創建我的集合之前調用它。
public function scopeIsActive($query)
{
return $query->where('is_active', true);
}
有沒有一種方法可以調用此isActive scope 而無需創建Controller來查詢具有有效價格的產品並將其放入routes/api.php
的ResourceCollection中,就像這樣?
Route::get('/product', function (Request $request) {
return new ProductCollection(
Product::all()->prices()->isActive()
);
});
你可以這樣做。
Route::get('/product', function (Request $request) {
return new ProductCollection(
Product::with(['prices' => function($query) {
$query->isActive();
}])->get()
);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.