为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 只搜索完全匹配

Laravel 只搜索完全匹配

PHP
慕雪6442864 2023-07-01 17:33:04
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 存在的行。


查看完整回答
反对 回复 2023-07-01
?
有只小跳蛙

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',
        ]);


查看完整回答
反对 回复 2023-07-01
  • 2 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信