PHP/Laravel 新手在這里。預期行為我想使用表單操作通過插入 id(例如快遞跟蹤 id)來從數據庫獲取數據。到目前為止它正在工作,但我只想僅當數據庫中存在該 id 時才顯示結果代碼控制器 public function search(Request $request) { $request->validate([ 'query' => 'required|min:10|max:10', ]); $query = $request->input('id'); $orders = Order::where('id','LIKE',"%$query%")->get(); $name = $request->input('id', '$id'); return view('order-details', compact('orders'));訂單刀片<form action="{{ route('order-details') }}" method="GET" class="order-form"> <div class="row"> <div class="col-lg-12"> <input type="text" placeholder="Track Order ID" name="query" id="query" value="{{ request()->input('query') }}"> </div> <div class="col-lg-12"> <button type="submit">Submit Now</button> </div> </div></form>@if(count($errors) > 0) <ul> @foreach ($errors->all() as $error) <li>{{$error}}</li> @endforeach </ul>@endif路線Route::get('order', 'OrderController@index')->name('order');Route::get('order-detail', 'OrderController@search')->name('order-details');
2 回答

三國紛爭
TA貢獻1804條經驗 獲得超7個贊
我認為你的問題是你正在使用類似的條件,就像眾所周知的數字不穩定一樣。
$query = $request->input('id') ?? -1; Order::where('id', $query)->get();
僅在 id 上的位置,將僅返回 id 存在的行。

有只小跳蛙
TA貢獻1824條經驗 獲得超8個贊
您使用了錯誤的查詢。
$orders?=?Order::where('id','LIKE',"%$query%")->get();
like 運算符不僅會得到與該查詢類似的任何內容。
您只需刪除 like 運算符即可僅獲取與確切 id 匹配的訂單。
$orders?=?Order::where('id',$query)->get();
您還可以添加存在規則:
驗證的字段必須存在于給定的數據庫表中。
$request->validate([? ???????????'query'?=>?'exists:orders,id', ????????]);
- 2 回答
- 0 關注
- 164 瀏覽
添加回答
舉報
0/150
提交
取消