序:前两天碰到一个业务需求,当前项目中有两张表。
a表是余额变动日志表
log_id | int | 主键 |
---|---|---|
user_id | int | 用户ID |
scene | tinyint | 变动场景 |
source | varchar | 来源 |
money | decimal | 变动金额 |
describe | varchar | 说明 |
create_time | int | 创建时间 |
b表是积分变动日志表
log_id | int | 主键 |
---|---|---|
user_id | int | 用户ID |
scene | tinyint | 变动场景 |
source | varchar | 来源 |
value | decimal | 变动积分 |
describe | varchar | 说明 |
create_time | int | 创建时间 |
tips:现在的需求是两张表中的订单来源有些是一样,只是他们的变动场景不一样。及不同的用户获取到的金额和积分都不一样。可能有些是获得金额,有些是获得积分。要将他们整合起来。
主管给了一个整合的思路。即:
现根据指定的source找出两张表中的所有相关数据。在只求出每个数据中的表动场景(scene)的数据。将scene的值合并然后去重,在以scene和source作为条件去查找两张表中的数据。将这些数据作为集合返回给前端。
我在根据source查出的scene数据中有如下,例:
1 |
|
而后用了 array_keys() 和 array_flip() 两个函数将他们合并去重
array_keys(array_flip($balanceSence) + array_flip($pointsSence))
得到的结果为:[1,2,3,4,6,7,8,10]
在根据这个数组加上source去两张表中查询,查询出来的数据将他们合并即可。在使用 array_push() 合并的时候发现一直报错。显示并非数组,因此困扰了好久。最后发现查询出来的数据,在模型层查询出来的数据是以对象的形式返回的,需要过一遍 toArray() 才可以返回数组。
以上就是笔记之一。