新手到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条答案
按热度按时间u5i3ibmn1#
您使用了错误的查询。
like操作符将得到类似于该查询的任何内容,而不仅仅是。
您只需删除like操作符,就可以只获得与确切id匹配的订单。
您还可以添加exists规则:
验证中的字段必须存在于给定的数据库表中。
6g8kf2rb2#
我认为你的问题是你在使用一个like条件,like在数字上是出了名的flakey。
where on only id,将只返回id存在的行。