我已经开始使用CakePHP (1.3) 编写一个项目,并且发现使用 CakePHP 查询风格返回结果很困难。
该项目是一个问题跟踪器。到目前为止,我只有以下表格 - 'users'、'projects' 和链接表 'projects_users',因为任何用户都可以与一个或多个项目相关联。还有一个链接到项目表的“状态”表。
我已经在模型中建立了关联。
我正在尝试为那些登录的人返回一个摘要页面,显示项目名称、由登录过滤的项目状态user_id
。如果我在 SQL 中执行此操作,那么我将执行以下操作。
SELECT
`statuses`.name,
`projects`.name
FROM
`statuses`
INNER JOIN `projects` ON (`statuses`.id = `projects`.status_id)
INNER JOIN `projects_users` ON (`projects`.id = `projects_users`.project_id)
INNER JOIN `users` ON (`projects_users`.user_id = `users`.id)
WHERE
`users`.id = 1
$this->Project->find('all'))
返回所有项目、状态详细信息和用户详细信息。
Array
(
[0] => Array
(
[Project] => Array
(
[id] => 1
[name] => Project 1
[status_id] => 2
[date_created] => 0000-00-00
)
[Status] => Array
(
[id] => 2
[name] => Live
)
[User] => Array
(
[0] => Array
(
[id] => 1
[username] => d
[password] => ********************************
[role] => master
[ProjectsUser] => Array
(
[id] => 1
[project_id] => 1
[user_id] => 1
)
)
)
)
Etc..
我也试过
$this->Project->find('all', array('conditions'=>array('User.id' => $this->Session->read('Auth.User.id'))))
返回错误:
'where 子句'中的未知列'User.id'
如果我尝试
$this->Project->User->find('all', array('conditions'=>array('User.id' => $this->Session->read('Auth.User.id'))))
它正确返回与 user_id 关联的所有项目,但现在我不再返回 status 的值,只返回 id。
Array
(
[0] => Array
(
[User] => Array
(
[id] => 1
[username] => d
[password] => ********************************
[role] => master
)
[Project] => Array
(
[0] => Array
(
[id] => 1
[name] => Project 1
[status_id] => 2
[date_created] => 0000-00-00
[ProjectsUser] => Array
(
[id] => 1
[project_id] => 1
[user_id] => 1
)
)
[1] => Array
(
[id] => 3
[name] => Project 3
[status_id] => 1
[date_created] => 0000-00-00
[ProjectsUser] => Array
(
[id] => 2
[project_id] => 3
[user_id] => 1
)
)
)
)
)
有没有一种方法可以轻松地返回“CakePHP”之后的内容?我确定我在这里遗漏了一些明显的东西。