#laravel #model-view-controller #eloquent #e-commerce #dynamic-variables
#laravel #model-view-controller #красноречивый #электронная коммерция #динамические переменные
Вопрос:
Я хочу:
- Создайте логику динамического маршрута для обработки категорий и подкатегорий в URL.
- Отправьте динамическую переменную в предложение where в модели Products
Web.php Файл маршрута:
Route::prefix("products")->group(function () {
Route::get('{category_one}/{category_two}',[ProductsController::class,'index'])->where(['category_one'=> '[A-Za-z] ','category_two'=>'[A-Za-z] ']);
});
ProductsController.php
use AppModelsProducts;
public function index()
{
$products = new Products;
$products=$products->getProducts();
return view('pages.products')->with(['products'=>$products]);
}
Products.php Модель
use IlluminateSupportFacadesDB;
public function getProducts(){
$products = DB::table('products')->where([['category_one', "{category_one}"],['category_two', "{category_two}"]])->latest()->get();
return $products;
}
У меня возникла проблема с динамическим извлечением {category_one} и {category_two} из URL.
ОШИБКА:
SQLSTATE[42S22]: столбец не найден: 1054 неизвестных столбца ‘category_two’ в предложении ‘where’ (SQL: выберите * из
products
where (category_one
= {category_one} иcategory_two
= {category_two}) по порядкуcreated_at
desc)
Ответ №1:
Вы можете получить параметры маршрута из объекта запроса
use AppModelsProducts;
use IlluminateHttpRequest;
public function index(Request $request)
{
$categoryOne = $request->route('category_one');
$categoryTwo = $request->route('category_two');
$products = Products::where([
['category_one', $categoryOne],
['category_two', $categoryTwo]
])->latest()->get();
return view('pages.products',['products'=>$products]);
}