'Department-6ren">
gpt4 book ai didi

php - 多级 "has many"关系

转载 作者:可可西里 更新时间:2023-11-01 01:04:36 25 4
gpt4 key购买 nike

我想实现一个结构,例如一个组织有很多部门,而部门有很多人。

我已经像这样设置了我的模型结构:

组织

<?php

class Organisation extends AppModel {

public $hasMany = array(
'Department' => array(
'className' => 'Department',
'foreignKey' => 'organisations_id'
)
);
}

部门

<?php

class Department extends AppModel {

public $hasMany = array(
'Person' => array(
'className' => 'Person',
'foreignKey' => 'departments_id'
)
);
}

<?php

class Person extends AppModel {

}

然后我有一个这样的 Controller :

<?php

class OrganisationsController extends AppController {

public $helpers = array('Html', 'Form', 'Session');
public $components = array('Session');


public function index() {
$this->set('organisations', $this->Organisation->find('all'));
}

}

当我打印出 $organisations 时,我得到一个这样的数组:

Array
(
[0] => Array
(
[Organisation] => Array
(
[id] => 1
[created] => 2013-01-03 16:02:47
)

[Department] => Array
(
[0] => Array
(
[id] => 1
[created] => 2013-01-03 16:02:47
[organisations_id] => 1
)

)

)

)

我是 PHP 和 CakePHP 的新手,但是您不希望 Person 数组包含在 Organization 数组中吗?如果没有,是否有另一种方法可以实现上述结构(组织->部门->人员)?

非常感谢任何关于如何解决这个问题的提示! :)

最佳答案

您可能正在寻找 recursive

或者您可以使用 containable behaviour

但是请看一下结果。当使用递归时,你会得到很多你不想要的数据!所以请谨慎选择您真正需要的字段!

递归

你会得到这样的东西:

<?php

class OrganisationsController extends AppController {

public $helpers = array('Html', 'Form', 'Session');
public $components = array('Session');


public function index() {
$this->Organisation->recursive = 2; # or -1, 0, 1, 2, 3
$this->set('organisations', $this->Organisation->find('all'));
}
}

您也可以像这样在 find 本身中声明它:

$this->set('organisations', $this->Organisation->find('all' array(
'recursive' => 2 # or -1, 0, 1, 2, 3
)
));

可容纳

class Organisation extends AppModel {

public $hasMany = array(
'Department' => array(
'className' => 'Department',
'foreignKey' => 'organisations_id'
)
);

$actsAs = array('Containable');
}

现在在你的 Controller 中你可以做类似的事情:

$this->set('organisations', $this->Organisation->find('all', array(
'contain' => array('User')
)
));

但一如既往,条条大路通罗马。所以请仔细阅读书籍!

关于php - 多级 "has many"关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14154314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com