蛋糕PHP 3 - 依靠深度联想



我有三个表userscampaignsvideos

他们的关系就像

users->hasMany('campaigns');
campaigns->hasMany('videos');

我想要的是选择所有用户并计算他们的videos记录。

我可以按特定表进行过滤,就像我可以在$this->Videos->find()上计算videos条记录一样。

但是如何在 CakePHP 3 中计算深度相关?即Users

我想要什么

User object => [
'email' => 'email@example.com'
'name' => 'My Name'
'post_videos_count' => 10
]
User object => [
'email' => 'email2@example.com'
'name' => 'User 2'
'post_videos_count' => 50
]

其中emailname字段来自Userspost_videos_count包含相关视频的数量。

可能包含和计数:

$query = $users->find()->contain(['Campaigns' => ['Videos' => function ($q) {
return $q->count('Video.id');
}]]);

使用计数器缓存行为。这是高效且最简单的解决方案。

https://book.cakephp.org/3.0/en/orm/behaviors/counter-cache.html

最新更新