TP5实践小总结(1)

TP5的关联应用

参考TP5的多对多关联文档,给大家简单介绍一下我在项目应用中的实现。

  • ER图讲解多对多关系

图片描述

如图绘出“订单——票据”联系,记为“O-T”联系;图中Order实体和Ticket各画了5个属性作为展示,业务需要不同属性也一定不一致,这点大家可根据业务场景自行设计;其中Ticket实体大家可联系成商品,就好比我们购物下单时,一笔订单可包含各种各样的商品,这里我的订单中所有的商品都是票据,一笔订单包含多张票据。

  • 数据表

根据绘制的ER图我们可以确定,订单-票据的数据表实现需要三张表,订单表Orders(Order是数据库关键字因此不能作为表名),票据表Ticket,中间表Oticket。在我的项目中订单表Orders和票据表Ticket属性较为复杂,在此不一一列举说明,关系表Oticket中用我用oid记录订单id,tid记录票据id。

clipboard.png

  • 模型定义

对照文档中的belongsToMany方法

clipboard.png

来给Orders模型和Ticket模型定义关联

clipboard.png
中间表名都是Oticket,大家需要注意一下外键和当前模型关联键名的位置不要写错

clipboard.png
模型要和表名一致,建议大家使用自动生成目录的方法,在build.php中定义好所有的控制器、模型、验证器等,注意大小写,在此先不详细介绍了,可参见链接描述

  • 控制器调用查询

在控制器中写一个接口,查询出符合查询条件的结果集,定义为$res,我的需求是列表查询,订单列表中就需要显示每笔订单下票据的详细信息,因此需要将每笔订单中的每张票据信息封装在ticketInfo中。
clipboard.png
调用的列表接口结果集返回实例参见接口文档 链接描述

        {
            "id": 22,
            "orderNumber": "2018011857511014",
            "cid": 1,
            "state": 0,
            "message": " ",
            "fakeAmount": 20000,
            "realAmount": 19800,
            "price": 200,
            "discount": 0,
            "profit": 0,
            "isShare": 0,
            "payTime": 1516248345,
            "deadline": 1516248945,
            "sendTime": 0,
            "sentTime": 0,
            "finishTime": 0,
            "cancelTime": 0,
            "closeTime": 0,
            "create_time": 1516248345,
            "isDelete": 0,
            "deleteTime": 0,
            "company": "杭州柯基有限公司",
            "ticketSum": 2,
            "ticketInfo": [
                {
                "tid": 4,
                "aid": 8,
                "acceptBank": "三农",
                "ticketState": 0,
                "ticketNumber": "12423412",
                "image": "uploads/20180115/a301db72444edd285650bf655d26ac70.jpg",
                "fakeAmount": 234234,
                "price": 123,
                "discounts": 0,
                "adjustDay": 0,
                "ticketTime": 1514876755,
                "endTime": 1517388228,
                "restTime": 11
                },
                {
                "tid": 5,
                "aid": 8,
                "acceptBank": "三农",
                "ticketState": 0,
                "ticketNumber": "324534234",
                "image": "uploads/20180115/b6894f7048b361dc905b414b5fe2d705.jpg",
                "fakeAmount": 23412431,
                "price": 2314,
                "discounts": 0,
                "adjustDay": 0,
                "ticketTime": 1514882243,
                "endTime": 1517388228,
                "restTime": 11
                }
            ]
        }
        

以上就是我在项目实践中对多对多关联的一些应用,主要还是对照开发文档实践链接描述,只是文档中只介绍了单个查询的方法,我展示的是在应用中遇到的我使用结果集关联查询的方法,若是单笔订单查询,就不需要用到循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值