3

我对 CakePHP 很陌生,但我想我已经开始掌握它了。我正在尝试以递归方式提取相关表信息,但我想指定要递归的相关模型。让我举一个例子来证明我的目标:

我有一个模型“客户”,其中包含公司名称、网站等信息。“客户”有许多“地址”,其中包含个人联系人的信息,如联系人姓名、街道、城市、州、国家等。“客户”也属于“CustomerType”,它只是具有描述性类别信息 - 名称和描述,如“分销商”或“制造商”。

当我在“客户”上进行查找时,我想将关联的“客户类型”和“地址”信息作为子数组获取,只需正确设置 hasMany 和 belongsTo 关联就可以正常工作。但现在,这是我的问题:我想获得相关的州/国家信息。所以,不是每个“地址”数组行都只有“state_id”,我希望它有“state”=>array(“id”=20,“name”=“New York”,...)等。

如果我在合作伙伴模型中将 $recursive 设置为更高的值(例如,2),我会得到我想要的每个“地址”中的州/国家信息。但它也会在“CustomerType”上递归,这导致我的“Partner”对象的“CustomerType”字段具有大量与该类型匹配的所有客户对象,可能长达数千。

所以重点是,我不想在“CustomerType”上递归,只在“Address”上递归。有什么办法可以设置吗?

抱歉这个冗长的问题,提前谢谢!

4

2 回答 2

9

我建议您使用“可包含”行为;在书中的蛋糕网站上查看更多帮助:http: //book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html

于 2010-04-19T16:20:20.530 回答
3

有时,containable 会生成太多查询。实现您想要的另一个选项是取消绑定 CustomerType 模型。您可以在此处找到更多详细信息:http: //teknoid.wordpress.com/2008/07/17/forcing-an-sql-join-in-cakephp/,http : //mark-story.com/posts/view/使用-bindmodel-to-get-to-deep-relations

于 2010-04-19T22:36:10.050 回答