【发布时间】:2014-06-17 02:28:30
【问题描述】:
我试图在我的 CakePHP 2.4 应用程序中获取一个用户列表,这些用户为特定项目贡献了帖子(想想“类别”)。我的数据如下:
项目有很多帖子
用户有很多帖子
帖子属于项目和用户。
我正在尝试在我的项目view 方法中进行查找以获取贡献者列表:
$this->loadModel('User');
$this->loadModel('Post');
$this->set('contributors', $this->Project->Post->User->find('list', array(
'conditions' => array('Post.project_id' => $id)
)));
理想情况下,这应该给我一个创建帖子的用户列表,其中project_id 等于 $id。但是,我收到一个错误:Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Post.project_id' in 'where clause'。
显然,ORM 无法理解我的代码:它不知道我所说的 project_id 到底是什么意思。是否可以通过在相关模型中搜索字段来获取用户列表?还是这超出了 CakePHP 对象系统的能力?
这是我在 SQL 中尝试做的一个近似值。我仍然不想使用裸 SQL,因为所有消息来源都告诉我这是一个糟糕的想法。 如何在 Cake 查找中构建类似的查询?
SELECT
users.*
FROM
users
WHERE
EXISTS (
SELECT
*
FROM
posts
WHERE
users.id = posts.user_id
AND
posts.project_id = " . $id . "
)
【问题讨论】:
标签: php sql cakephp cakephp-2.4