您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> MYSQL >> 多表查询 搜索副表字段

多表查询 搜索副表字段

来源:网络整理     时间:2018/1/25 13:28:07     关键词:

关于网友提出的“ 多表查询 搜索副表字段”问题疑问,本网通过在网上对“ 多表查询 搜索副表字段”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 多表查询 搜索副表字段
描述:

一张订单表 关联订单商品表 一个订单号可能对应多个订单商品 当我搜索订单商品的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()

解释:

  1. whereHas 是把订单中商品 title 包含了 search 的订单查询出来。
  2. with 是在查询出符合条件订单的时候去关联取 OrderGoods 数据,取出来的 OrderGoods 通过预加载的约束条件,取出只符合 search 条件的 OrderGoods.

以上介绍了“ 多表查询 搜索副表字段”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4535032.html

相关图片

相关文章