TP5相关应用参考TP5多对多相关文档,简单介绍一下我在项目应用中的实现。ER图解释了多对多关系。如图,画出“Order-Ticket”连接,记录为“O-T”连接;图中Order实体和Ticket各抽取5个属性作为展示,业务需求的不同属性必须不一致。积分可根据业务场景自行设计;其中Ticket实体可以关联到商品,就像我们下单购物一样,一个订单可以包含各种商品。在这里,我订购的所有产品都是门票。一个订单包含多张工单。数据表根据绘制的ER图,我们可以确定实现order-bill数据表需要三张表,order表Orders(Order是数据库关键字,不能作为表名),ticket表Ticket和中间表Oticket。在我的项目中,订单表Orders和票表Ticket的属性比较复杂。我不会在这里列出它们。在关系表oticket中,我用oid记录orderid,tid记录ticketid。模型定义参考文档中的belongsToMany方法来定义Orders模型和Ticket模型之间的关系。中间表名称是Oticket。需要注意外键的位置和当前模型的关联键名。不要犯错误。模型必须与表名一致。建议大家使用自动生成目录的方式,在build.php中定义所有的controller、models、validators等,注意大小写,这里不做详细介绍,请参考链接说明。controller调用query,在controller中写一个接口,查询满足查询条件的结果集,定义为$res。我的要求是列表查询。订单列表需要展示每条订单下的账单的详细信息,所以需要将每条订单中每张票的信息封装在ticketInfo中。调用list接口结果集返回实例参考接口文档链接说明{"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":"HangzhouKeBankLimited","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}]}以上是我在项目中所做的实践对于一些多对多关联的应用,链接描述主要是对比开发文档,但是文档中只介绍了单一的查询方法,我展示的是我在应用中遇到的使用result的方法setassociationquery.如果是单For顺序查询,就不用循环了
