Laravel 的新手,为什么 $car 没有传递到我的搜索视图?

New to Laravel, why is $car not getting passed to my search view?

当我在搜索页面中添加 dd($car) 时,它显示如下: Image

路线:

Route::get('/search', [RepairController::class, 'search']);

控制器:

public function search(Car $car, Repair $repairs)
    {
        $repairs_new = DB::table('repairs')->where('car_id', '=', $car->id)->get();

        return view('cars.search',
            [   'car' => $car,
                'repairs_new' => $repairs_new]
        );
    }

如果您需要任何其他信息来解决此问题,请在评论中告诉我,谢谢。

编辑(更多代码 + 更改):

搜索表单:

<form class="form-inline" type="get" action="/search/{car}">
  <input
    class="form-control shadow appearance-none border rounded w-100 py-2 px-3 mb-2 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"
    type="search" name="query" placeholder="Search repairs">
  <button
    class="w-32 bg-blue-500 hover:bg-blue-700 text-white font-bold p-2 m-2 rounded focus:outline-none focus:shadow-outline"
    type="submit">Search</button>
</form>

路线:

 Route::get('/search/{car}', [RepairController::class, 'search']);

控制器中的搜索功能:

public function search(Car $car, Repair $repairs)
    {
        $search_text = $_GET['query'];
        // $repairs = $car->repairs()->get();
        // $repairs_new = $repairs->where($repairs->car_id, '=', $car->id)->get();
        $repairs_new = $repairs->where('repair', 'LIKE', '%' . $search_text . '%')->where('car_id', 'LIKE', $car->id)->get();
        // $repairs_new = DB::table('repairs')->where('car_id', '=', $car->id)->get();

        return view('cars.search',
            [   'car' => $car,
                'repairs_new' => $repairs_new]
        );
    }

根据 documentation,您需要指定如何在路由中检索信息。

Route::get('/search/{car:id?}/{repairs:id?}', [RepairController::class, 'search']);

其中 :id 是用于执行查找的数据库列。因此,在这种情况下,您将访问 /search/1/1,其中 1CarRepairs 记录的 id

Note: ? at the end of the slug is optional here.

不完全确定为什么要使用 DB 门面,而您可以在此处轻松地 use relationships 并执行像 $car->repairs() 这样简单的操作来获得维修并简单地传入Car 模型到搜索。