lararvel 框架 如何查询 一对多 子表的数据

43 篇文章 1 订阅

 例如 有一个订单表order ,和订单下的相关商品表 order_goods

既可以搜索订单,又可以搜索订单下的商品 

  if (isset($data['keywords']) && $data['keywords'] != '') {
            $sql->where('order_sn', '=', $data['keywords']);

           // $sql->has('toGoods.goods_name','like','"%'.$data['keywords'].'%"');
            $sql->orWhereHas ('toGoods',function ($q) use($data){
                $q->where('goods_name', 'like', '%' . trim($data['keywords']) . '%');
            });

        }

注:如果要用and  可以使用  whereHas即可

生成sql语句

select count(*) as aggregate 
from
`dl_order_info` 
where
`id` > 0 
and
`order_sn` = '南极人短袖t恤男' 
or exists 
(select * from `dl_order_goods` where `dl_order_info`.`id` = `dl_order_goods`.`order_id` and `goods_name` like '%南极人短袖t恤男%') 
and
`is_refund` = '0' 
and 
`user_id` = 11

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值