从另一个表中获取另一个字段的值? CakePHP的

时间:2013-03-25 15:41:13

标签: php cakephp

我有两个表,departmentsusers。在users,我有以下字段:

id | username | password | email | department | date_created

现在departments,我有以下字段:

id | name

department表上的users字段为INT,并指向id表上的相应departments。如何在网络上呈现时检索要在name字段上显示的相应department?我试过这样做,但似乎没有用。

class UsersController extends AppController {

    public function index() {
        $this->set('users', $this->User->find('all'));

        $departmentsArray = array();
        $departments = $this->Department->find('all');
        foreach ($departments as $department) {
            $departmentsArray[$department['Department']['id']] = $department['Department']['name'];
        }
        $this->set('departments', $departmentsArray);
    }

}

我应该用它来检索View\Users\index.ctp上的数据。但是,它给了我一个错误:

Error: Call to a member function find() on a non-object 
File: D:\server\root\app\Controller\UsersController.php 
Line: 11

第11行是我在上面给出的第一个代码块中的$departments = $this->Department->find('all');

很抱歉,如果这看起来太复杂了,如果有更简单的方法来解决这个问题,请告诉我。我想简单地说,我需要通过另一个表定义的id来检索表中的数据。

修改

来自 Hyarion 的其他信息,而不是使用find('all')我使用find('list')所以我将代码行从6减少到1! :)这是新代码:

class UsersController extends AppController {
    var $uses = array('User', 'Department');

    public function index() {
        $this->set('users', $this->User->find('all'));

        $this->set('departments', $this->Department->find('list'));
    }

}

1 个答案:

答案 0 :(得分:5)

您还需要告诉控制器加载Departments的模型。默认情况下,它只加载用户。

将其添加到控制器的顶部:

var $uses = array('User', 'Department');