大家好,我想关键字同时模糊查询订单号和商品名称,看下面代码
<?php
// 引入订单模型
use App\Models\Product\Order as OrderModel;
// 引入订单表产品模型
use App\Models\Product\OrderProduct as OrderProductModel;
// 引入商品的数据模型
use App\Models\Product\Product as ProductModel;
public function index()
{
//用户id
$busid = request('busid', 0, 'trim');
//获取关键字
$keywords = request('keywords', '', 'trim');
$qb = OrderModel::query();
//通过用户id查询订单数据
$result = $qb->where('busid', $busid)->orderBy('id', 'DESC')->get();
/*
$where = [];
$where['busid'] = $busid;
if($keywords)
{
$where[] = ['code', 'like', "%$keywords%"];
}
$result = $qb->where($where)->orderBy('id', 'DESC')->get();
我这里实现模糊查询订单号
*/
$data = [];
foreach($result as $item) {
//这里实现模糊查询商品名称
$orderproduct = OrderProductModel::with(['product'])
->whereHas('product', function ($query) use ($keywords){
if ($keywords){
$query->where('name', 'like', '%' . $keywords . '%');
}
})->where('orderid', $item['id'])->first();
if($orderproduct) {
$item['orderproduct'] = $orderproduct;
$data[] = $item;
}
}
return success('', '', $data);
}
已经能够分别实现模糊查询订单号和商品名称,但是本人经验不足,不知道怎么处理在查到订单号时如何去避免再去查商品名称和在查不到订单号时怎么去查询商品名称,注意,商品名称的模糊查询用到了链表