我正在嘗試為我的網路應用程式實作一個合格的搜索,并決定跟隨 Laracasts 視頻在這里。
這是提出請求的形式:
<form action="find-manufacturer/" class="search-form" method="GET">
<input type="text" placeholder="Search for your manufacturer" name="search" id="search" autocomplete="off" value="{{ request("search") }}">
</form>
處理請求的路由:
Route::get("find-manufacturer/", function (Manufacturer $manufacturer) {
if (request("search")) {
$manufacturers = Manufacturer::where('slug', 'like', '%' . request("search") . '%')->get();
return view("search-results", [
"manufacturer" => $manufacturer, // This variable is irrelevant to the current problem, but doesn't seem to be causing a conflict either
"manufacturers" => $manufacturers,
]);
}
});
最后是應該在其中呈現結果的 Blade 檔案:
@if($manufacturers->isNotEmpty())
@foreach ($manufacturers as $manufacturer)
{{ $manufacturer->slug }}
@endforeach
@else
<div>
<p><h1>No results found.</h1></p>
</div>
@endif
無論我在表單中輸入了多少有效搜索詞(部分或全部記錄的 slug),搜索詞都不會回傳任何內容,即使我仍然能夠成功回傳所有帶有Manufacturer:all().
我替換get()為toSql()用于除錯并將其轉儲到dd()中,其結果似乎證實了問題出在搜索詞中:
"select * from `manufacturers` where `slug` like ?"
但是,不僅搜索詞在功能上與 Jeffrey Way 在 Laracasts 視頻中使用的相同,而且無論我嘗試使用不同的參考/連接方法有多少變體,我都無法讓它作業。
這里發生了什么?
uj5u.com熱心網友回復:
您沒有使用任何引數,因此使用路由模型系結沒有意義
Route::get("find-manufacturer/", function (Manufacturer $manufacturer) {...});
此外,如果request('search')評估為 false,您的函式將不會執行任何操作。考慮到這一點,您的路線功能可能應該是
Route::get("find-manufacturer/", function () {
if (request("search")) {
$manufacturers = Manufacturer::where('slug', 'like', '%' . request("search") . '%')->get();
} else {
$manufacturers = collect();
}
return view("search-results", compact('manufacturers'));
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/421725.html
標籤:
下一篇:使用PHP替換內部主體
