我有两张桌子,departments
和users
。在 上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'));
}
}