我将像这样在车辆表中过滤具有区名的数据,
public function index()
{
$vehicles = Vehicle::with('uploads')
->when($request->district, function ($query, $request) {
return $query->where('districtname', $request->district);
})->get();
return view('vehicles.index')->withVehicles($vehicles);
}
和我的这样的车辆桌子
id districtname vehiclename
1 alabama toyota
2 alamaba ford
3 miyuri bmw
4 misisipi benz
5 miyuri ford
6 alabama toyota
路线就是这样,
Route::get('district', [
'uses' => 'VehicleController@index',
'as' => 'districts.index',
]);
但收到以下错误消息,
Undefined variable: request
in VehicleController.php line 39
如何解决此问题?
答案 0 :(得分:1)
在查询生成器上调用 when()时,第一个参数是要传递给回调的值,该值作为第二个参数传递。
这样做的时候
->when($request->district, function ($query, $request) {
return $query->where('districtname', $request->district);
})
然后 $ request-> district 传递给回调,只要它具有值,因此就无需尝试访问其 district 属性。
>要解决此问题,请将以上内容更改为:
->when($request->district, function ($query, $district) {
return $query->where('districtname', $district);
})
答案 1 :(得分:0)
错误
Undefined variable: request
in VehicleController.php line 39
是因为未在函数索引中使用REQUEST
您将不得不在类中使用Illuminate \ Http \ Request,还需要在索引函数中传递REQUEST obj。
检查以下代码以使用它。
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SomeController extends Controller
{
public function index(Request $request)
{
$vehicles = Vehicle::with('uploads')
->when($request->district, function ($query, $district) {
return $query->where('districtname', $district);
})->get();
return view('vehicles.index')->withVehicles($vehicles);
}
}