У меня простая задача со сложным запросом, 50% выполнено, остальная часть мне нужна помощь.
Logic
- У меня есть целевые страницы, где я выбираю категорию, затем выбираю
спецификации в этой категории и продукты, связанные с этим двумя
фильтр покажет на целевой странице.
this is done
- Мне также нужна целевая страница, когда я выбираю категорию без
выбрать любую спецификацию и показать все продукты, связанные с этим
категория независимо от того, какие характеристики у них есть.
need help for this
Коды
это мой контроллер i commented each part for better understanding
public function landings($slug){
$landing = Landing::where('slug', $slug)->Status('Active')->firstOrFail(); //find landing page
//getting landing pages category id (in case one landing page have several category involved)
$cat = DB::table('landing_categories')->where('landing_id', $landing->id)->get();
foreach ($cat as $key) {
$id[] = $key->category_id;
}
// i just add this to filter landing without specifications for if statement below **not sure about this yet**)
$spac = DB::table('landing_specifications')->where('landing_id', $landing->id)->get();
// this is where things happen (first $prod is responsible for landing with specifications and working fine, **else part** need fix to show landings without specifications.
if($spac != null){
//old
$prod = DB::table('landing_specifications')->where('landing_id', $landing->id)
->join('product_subspecification', function ($keys) {
$keys->on('product_subspecification.subspecification_id', '=', 'landing_specifications.subspecification_id');
})
->join('products', 'products.id', '=', 'product_subspecification.product_id')
->whereIn('products.category_id', $id)
->groupby('products.id')
->paginate(12);
}else{
//new
$prod = DB::table('landing_categories')->where('landing_id', $landing->id)
->join('products', 'products.category_id', '=', 'landing_categories.category_id')
->whereIn('products.category_id', $id)
->groupby('products.id')
->paginate(12);
}
return view('front.landing', compact('landing', 'prod'));
}
Надеюсь, мои комментарии в приведенном выше коде помогут вам избежать недоразумений.
PS: я знаю, что у меня есть 2 главных проблемы
- Мое утверждение if неверно
- Моя другая часть нуждается в исправлении (но перед исправлением if () я не могу увидеть результаты другой части)
есть идеи?