我有以下表格:
teams(id, name)
team_users(id, team_id, user_id)
users (id, username)
projects (id, project_name, team_id)
一个团队拥有许多用户,用户拥有多个团队,一个项目属于一个团队。
如果我拨打$ this-> User-> find();它返回用户及其所属团队的信息。
我想做的是,我想了解他所关联的项目。含义:
John Doe是X队的成员,Y.X有2个项目,Y有3个项目。我想将项目数量返回为5,某种虚拟字段。有可能吗?
答案 0 :(得分:1)
如果您已正确设置模型关系,则只需查询此查询:
$this->User->virtualFields = array('total_projects' => 'COUNT(*)');
$user_projects = $this->User->find('all',array('fields' => array('total_projects', '*')));
//$user_projects["User"]["total_projects"] -> this will result to 5 base on your question above or you can debug this by: debug($user_projects) so you can see the content of the array
答案 1 :(得分:0)
在关系中使用“counterCache”选项。
http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#belongsto
class Project extends AppModel {
public $belongsTo = array(
'Team' => array(
'className' => 'Team',
'foreignKey' => 'team_id',
'counterCache' => true
)
);
}
您需要在project_count
表中添加一个新字段teams
,CakePHP将完成其余的工作。