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 关注
- 120 浏览
添加回答
举报
0/150
提交
取消