Как исправить неопределенную переменную: запрос в laravel 5.6 - PullRequest
0 голосов
/ 01 сентября 2018

Я собираюсь отфильтровать данные по району в моей таблице транспортных средств, например,

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 голосов
/ 01 сентября 2018

Ошибка

Undefined variable: request
in VehicleController.php line 39

Из-за неиспользования REQUEST в индексе функции

Вы должны будете использовать Illuminate \ Http \ Request в вашем классе, а также вам нужно будет передать объект REQUEST в вашу функцию индекса.

Проверьте приведенный ниже код, чтобы использовать его.

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

}
0 голосов
/ 01 сентября 2018

Когда вы вызываете 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);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...