0

我想弄清楚是否有办法正确连接我的模型以实现以下目标:

我有 3 张桌子,客户 -> 倡议 -> 里程碑。

在客户中,我有:

public $hasMany = array( 'Initiative'  );

在倡议模型中,我有:

public $belongsTo = 'Client';
public $hasMany = 'Milestone'

里程碑有:

public $belongsTo = 'Initiative';

使用公共 $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]

我想我需要在我的模型中设置某种自定义查询。我怎样才能做到这一点?

4

1 回答 1

0

我认为,这是不可能的,因为

A Client --- hasMany ---> 倡议

一项倡议 --- hasMany ---> 里程碑

因此,如果您获得客户信息,则将检索多个计划,如果您获得计划,则将存在多个里程碑。

如果您仍想组合所有里程碑并显示在第一级,则必须遍历数组值并手动检索里程碑。

于 2013-10-25T07:01:31.547 回答