资讯专栏INFORMATION COLUMN

TP5实践小总结(1)

EsgynChina / 3495人阅读

摘要:的关联应用参考的多对多关联文档,给大家简单介绍一下我在项目应用中的实现。数据表根据绘制的图我们可以确定,订单票据的数据表实现需要三张表,订单表是数据库关键字因此不能作为表名,票据表,中间表。

TP5的关联应用

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

ER图讲解多对多关系

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

数据表

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

模型定义

对照文档中的belongsToMany方法

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


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


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

控制器调用查询

在控制器中写一个接口,查询出符合查询条件的结果集,定义为$res,我的需求是列表查询,订单列表中就需要显示每笔订单下票据的详细信息,因此需要将每笔订单中的每张票据信息封装在ticketInfo中。

调用的列表接口结果集返回实例参见接口文档 链接描述

        {
            "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
                }
            ]
        }
        

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28510.html

相关文章

  • TP5.1+Vue前后端分离实践

    摘要:配置主域名二级子域名列表项目其中加入了版本控制,使用的是路由传入方式在路由文件中配置,如下版本路由省略方法名时有方法名时同时控制器里加入版本号这个例子最终的显示为项目最终目录结构为配置主域名配置此处可作反向代理二级接口子域名配置配置解决 配置: 主域名 www.demo.xyz 二级子域名 api.demo.xyz 列表项目其中api.demo.xyz加入...

    Caizhenhao 评论0 收藏0
  • TP5.1+Vue前后端分离实践

    摘要:配置主域名二级子域名列表项目其中加入了版本控制,使用的是路由传入方式在路由文件中配置,如下版本路由省略方法名时有方法名时同时控制器里加入版本号这个例子最终的显示为项目最终目录结构为配置主域名配置此处可作反向代理二级接口子域名配置配置解决 配置: 主域名 www.demo.xyz 二级子域名 api.demo.xyz 列表项目其中api.demo.xyz加入...

    melody_lql 评论0 收藏0
  • TP5之Workerman

    摘要:好了,开始今天的主题内容的使用下载使用中国镜像任何环境都可用然后再来下载,这样就不会有出现下载不了的问题,因为其他的中国镜像总有这那个小问题阻碍使用下载下载如果在下需要在下载注意记得在下载的使用,已经使用了切换到了项目目录, 好了,开始今天的主题内容:tp5的workerman 1.使用composer下载tp5    a) 使用中国镜像(任何环境都可用) composer confi...

    JayChen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<