tp5 union 之后使用where 失败

        ->alias('b')
        ->field(['(b.order_amount + b.store_amount) as total','b.create_time','b.order_id','b.pay_types'])
        ->where("b.order_status = 2")
        ->union(['select pay_amount as total,create_time,recharge_id as order_id,pay_type as pay_types from tp_recharge'])
        ->buildSql();

如上 执行之后 sql 语句为

SELECT (b.order_amount + b.store_amount) astotal,`b`.`create_time`,`b`.`order_id`,`b`.`pay_types` FROM `tp_order` `b` UNION ( select pay_amount as total,create_time,recharge_id as order_id,pay_type as pay_types from tp_recharge ) WHERE ( b.order_status = 2 )

where 条件放到最后执行了,我想要的是 把where 条件查询第一个表的后面,请问大家如何解决这个问题的


守着一只汪
浏览 1230回答 2
2回答

忽然笑

这个问题,因为没有这种需求操作过,建议可以看下 tP5 的 where 方法源码。不过碰到这种情况我一般会选择用源生 sql 直接操作的。
打开App,查看更多内容
随时随地看视频慕课网APP