i´m traying to do query into my repository to get galleries that to have a restaurant and i need seach for id. One restaurant´s gallery only can to have 10 images, but we can to have more than one restaurant. I need that when one restaurant will have a 10 images, it can´t upload any more and disable this restaurant.
sorry for my english, i hope that i can explain me correctly.
my controller:
if (auth()->user()->hasRole('admin')){
$restaurant = $this->restaurantRepository->pluck('name', 'id');
}else{
$restaurant = $this->restaurantRepository->galleries()->myActiveRestaurants()->pluck('name', 'id');
}
// get all media gallery of restaurant
//$media = $this->galleryRepository->getCountMedia();
foreach($restaurant as $res){
$res->cg = (count($res->galleries()->get()) == 10);
}
$hasCustomField = in_array($this->galleryRepository->model(), setting('custom_field_models', []));
if ($hasCustomField) {
$customFields = $this->customFieldRepository->findByField('custom_field_model', $this->galleryRepository->model());
$html = generateCustomField($customFields);
}
return view('galleries.create')->with("customFields", isset($html) ? $html : false)->with("restaurant", $restaurant)/*->with('imagesRestaurant', $media)*/;
here i´m calling to model function galleries() where i have a function to get, restaurant_id
but in my web, result is:
Call to a member function galleries() on string
i need to get restaurant_id for call here my repository:
public function getCountMedia(){
return Gallery::join("user_restaurants", "user_restaurants.restaurant_id", "=", "galleries.restaurant_id")
->where('user_restaurants.user_id', auth()->id())->count();
}
i don´t want auth()->id() i need restaurant_id for in my controller extract that restaurant to have 10 image
i hope that any can help me, please
updated
i´m instaciate class in construct:
public function __construct(GalleryRepository $galleryRepo, CustomFieldRepository $customFieldRepo, UploadRepository $uploadRepo
, RestaurantRepository $restaurantRepo)
{
parent::__construct();
$this->galleryRepository = $galleryRepo;
$this->customFieldRepository = $customFieldRepo;
$this->uploadRepository = $uploadRepo;
$this->restaurantRepository = $restaurantRepo;
}
i can show now, that restaurant_id it´s in galleries table, but i don´t know how to access to this property
updated2
i change my controller and repository:
controller
// get all media gallery of restaurant
foreach($restaurant as $res => $id){
$media[] = $this->galleryRepository->getCountMedia($res);
}
return view('galleries.create')->with("customFields", isset($html) ? $html : false)->with("restaurant", $restaurant)->with('imagesRestaurant', $media);
repository
public function getCountMedia($restaurantId){
return Gallery::join("user_restaurants", "user_restaurants.restaurant_id", "=", "galleries.restaurant_id")
->where('galleries.restaurant_id', $restaurantId)->count();
}
with this i get id for restaurant, and in blade i need disable option that value greater than 10 but, only get duplicate select…
blade:
@foreach($imagesRestaurant as $images)
{{$images}}
@if($images >= 10)
{!! Form::select('restaurant_id', $restaurant, null, ['class' => 'select2 form-control']) !!}
@else
{!! Form::select('restaurant_id', $restaurant, null, ['class' => 'form-control', 'disabled' => true]) !!}
@endif
@endforeach
Advertisement
Answer
you can do something link this
public function __construct($restaurant_id)
{
parent::__construct();
dd($restaurant_id);
$this->galleryRepository = new GalleryRepository(); // if you need you can pass here
$this->customFieldRepository = new CustomFieldRepository();
$this->uploadRepository = new UploadRepository();
$this->restaurantRepository = new RestaurantRepository();
}
here whenever your calling this class you need to pass restaurant_id like new ClassName($restaurant_id)
Update
you can create instance of repo and pass value like this
// get all media gallery of restaurant
foreach ($restaurant as $res => $id) {
$media[] = (new GalleryRepository($id))->getCountMedia($res);
}