关于网友提出的“ 多表查询 搜索副表字段”问题疑问,本网通过在网上对“ 多表查询 搜索副表字段”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 多表查询 搜索副表字段
描述:一张订单表 关联订单商品表 一个订单号可能对应多个订单商品 当我搜索订单商品的title 字段的时候 分页数据不一致 毕竟是用订单表做主表的

解决方案1:建议用模型关系做,可以用whereHas
解决方案2:@Perla
如这图
搜鲨鱼 显示订单号在加下面的商品
解决方案3:我看了下代码 逻辑好像是从订单商品表中的title字段搜索出包含你搜索名称的所有订单?
解决方案4:shop_order 当主表 left join 吧
解决方案5:如果建立好模型关联,写起来应该是这样的
ShopOrder::with(['goods' => function ($query) use($request) {
$query->where('title', 'like', '%'.$request->input('search').'%');
}])->get();
模型关联里的预加载添加约束条件
文档地址:https://d.laravel-china.org/d...
解决方案6:这个需求在电商中比较常见,根据你的代码有 Order Model 和 OrderGoods Model,是一对多关系。一个 Order 包含多个 OrderGoods
$search =$request->input('search');
Order::whereHas('goods', function ($query) use($search) {
$query->where('title', 'like', '%'.$search.'%');
})->with(['goods' => function ($query) use($search) {
$query->where('title', 'like', '%'.$search.'%');
}])->get()
解释:
- whereHas 是把订单中商品 title 包含了 search 的订单查询出来。
- with 是在查询出符合条件订单的时候去关联取 OrderGoods 数据,取出来的 OrderGoods 通过预加载的约束条件,取出只符合 search 条件的 OrderGoods.
以上介绍了“ 多表查询 搜索副表字段”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4535032.html