如何修复未定义的变量:Laravel 5.6中的请求

时间:2018-09-01 07:59:00

标签: php laravel-5

我将像这样在车辆表中过滤具有区名的数据,

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

如何解决此问题?

2 个答案:

答案 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);
    }

}