我试图在我的CakePHP 2.4应用程序中获取一个用户列表,这些用户已经为特定项目提供了帖子(想想'类别')。我的数据如下:
项目 hasMany 发布
用户 hasMany 发布
发布属于项目和用户。
我尝试在我的项目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 find中构建类似的查询?
SELECT
users.*
FROM
users
WHERE
EXISTS (
SELECT
*
FROM
posts
WHERE
users.id = posts.user_id
AND
posts.project_id = " . $id . "
)
答案 0 :(得分:0)
我找到了一个使用Cake的解决方案:这个代码成功地列出了所有Users
已创建Posts
的{{1}}我正在寻找的人。
project_id
答案 1 :(得分:-1)
$user=$this->Post->find('all', array(
'conditions' => array('Post.project_id' => $id)));
$this->set('contributors', 'user');
然后您可以使用debug($user); exit;
查看您将收到的结果