FleetCart/Modules/Product/Repositories/ProductRepository.php
2023-12-03 14:07:47 +00:00

41 lines
1.1 KiB
PHP

<?php
namespace Modules\Product\Repositories;
use Modules\Product\Entities\Product;
class ProductRepository
{
public static function list($ids = [])
{
return Product::select('id')
->withName()
->whereIn('id', $ids)
->when(!empty($ids), function ($query) use ($ids) {
$idsString = collect($ids)
->filter()
->implode(',');
$query->orderByRaw("FIELD(id, {$idsString})");
})
->get()
->mapWithKeys(function ($product) {
return [$product->id => $product->name];
});
}
public static function findBySlug($slug)//: Model|Builder
{
$product = Product::with(['variations', 'variants', 'categories', 'tags', 'attributes.attribute.attributeSet', 'options', 'files', 'relatedProducts', 'upSellProducts'])
->where('slug', $slug)
->firstOrFail();
if (request()->query('variant') && !$product->variant) {
abort(404);
}
return $product;
}
}