我想弄清楚是否有办法正确链接我的模型以实现以下目标:
我有3张桌子,客户 - >倡议 - >里程碑。
在我拥有的客户中:
public $hasMany = array( 'Initiative' );
在倡议模型中,我有:
public $belongsTo = 'Client';
public $hasMany = 'Milestone'
而且里程碑有:
public $belongsTo = 'Initiative';
使用public $ recursive = 2;在客户端模型中,我能够将里程碑嵌入到结果的计划中,所以它们看起来像这样......
array(2) {
["Client"]=>
array(3) {
["id"]=>
string(1) "3"
["name"]=>
string(17) "Company"
}
["Initiative"]=>
array(5) {
[0]=>
array(8) {
["id"]=>
string(1) "6"
["client_id"]=>
string(1) "3"
["Milestone"]=>
array(4) {
[0]=>
array(6) {
["id"]=>
string(1) "1"
["initiative_id"]=>
string(1) "6"
}
[1]=>
array(6) {
["id"]=>
string(1) "2"
["initiative_id"]=>
string(1) "6"
}
或者使用简短的手:
result
[client]
[initiative]
[milestone]
但是,为方便起见,我想要的是模型返回里程碑,因为它自己的数组没有嵌套在主动中。所以,
result
[client]
[initiative]
[milestone]
我想我需要在我的模型中设置某种自定义查询。我怎么能这样做?
答案 0 :(得分:0)
我认为,这是不可能的,因为
客户--- hasMany --->倡议
一项倡议--- hasMany --->里程碑
因此,如果您获得了客户信息,那么多个计划将会检索到,如果您将获得一项计划,那么将有多个里程碑。
如果您仍希望合并所有里程碑并在第一级显示,则必须遍历数组值并手动检索里程碑。