我正在从事laravel电子商务项目,在功能中,我需要发送我需要发送的产品的品牌参数,如果我没有发送任何参数,它返回所有的产品
函数
public function index($brand)
{
if ($brand) {
$products = Product::where('brand_id', '=', $brand)->get();
return response()->json($products);
} else {
$products = Product::get();
return response()->json($products);
}
}
路线
Route::get('/products/{brand}', 'App\Http\Controllers\ApiProductController@index');
当我在postman中尝试URL并写下特定品牌时,它成功地返回了产品,但当我没有成功时,它没有返回任何东西,而是返回了所有产品
发布于 2021-09-03 04:20:34
您可以简单地将参数声明为null。因此,当你要传递参数时,它将获得传递的值,否则将为null。
public function index($brand = null)
{
if ($brand) {
$products = Product::where('brand_id', '=', $brand)->get();
return response()->json($products);
} else {
$products = Product::get();
return response()->json($products);
}
}
然后在路径定义中也将该参数设为可选
Route::get('/products/{brand?}', 'App\Http\Controllers\ApiProductController@index');
现在,这应该如您所期望的那样工作。
发布于 2021-09-03 04:10:59
因为您已默认使用参数!..
Route::get('/products/{brand?}', 'App\Http\Controllers\ApiProductController@index');
添加'?‘帮助laravel理解它
发布于 2021-09-03 04:46:52
你可以试试这样的东西,
public function index($brand = null)
{
$products = Product::when($brand, function ($query, $brand) {
return $query->where('brand_id', $brand);
})
->get();
return response()->json($products);
}
https://stackoverflow.com/questions/69039374
复制相似问题