vendorRepository = $sellerRepository; $this->categoryRepository = $categoryRepository; $this->productRepository = $productRepository; } public function index() { $vendors = $this->vendorRepository->select('marketplace_sellers.id','url','logo','banner','shop_title','brand_attribute_id') ->where('is_approved',true) ->with(['categories:seller_id,type,categories']) // ->leftJoin('seller_categories','marketplace_sellers.id','=','seller_categories.seller_id') ->get(); foreach ($vendors as $vendor){ if($vendor->categories && $mainCats = $vendor->categories->where('type','main')->first()){ $cat_ids = json_decode($mainCats->categories,true); // $vendor->test = Category::collection($this->categoryRepository->getVisibleCategoryTree($cat_ids[0])); $vendor->main_categories = $this->categoryRepository->whereIn('id',$cat_ids) ->select('id','image','position','parent_id','display_mode','category_icon_path') ->where('status',1) ->with(['children'=> function($q){ $q->orderBy('position','asc'); }]) ->orderBy('position','asc') ->get(); } } return Vendor::collection($vendors); } public function vendor_products($vendor_id){ return ProductResource::collection($this->productRepository->findAllBySeller($vendor_id,request()->input('category_id'))); } }