CakePHP 3中可包含的过滤器

CakePHP 3中可包含的过滤器,cakephp,cakephp-3.4,Cakephp,Cakephp 3.4,我使用的是CakePHP3.4+ 我有以下表格及其关联 PostVideos->belongsToCampaigns | | PostVideos具有列campaign | id Campaigns->hasManyClientCampaigns | | ClientCampaigns具有列campaign | id UserClients->hasManyClientCampaigns | | ClientCampaigns具有用户|客户端| id UserClients具有列client\u

我使用的是CakePHP3.4+

我有以下表格及其关联

PostVideos->belongsToCampaigns | | PostVideos具有列campaign | id

Campaigns->hasManyClientCampaigns | | ClientCampaigns具有列campaign | id

UserClients->hasManyClientCampaigns | | ClientCampaigns具有用户|客户端| id

UserClients具有列client\u id

我想在UserClients中选择/统计带有客户端id条件的PostVideos

但它给出了数据库错误

你必须使用匹配

如果不需要加载用户客户端,可以跳过contain

$count['videos']['uploaded'] = $this->Campaigns->PostVideos->find()
    ->where(['UserClients.client_id' => $this->Auth->user('id')])
    ->contain(['Campaigns.ClientCampaigns.UserClients'])
    ->count();
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'UserClients.client_id' in 'where clause' 
$userId=$this-Auth->user('id');
$this->Campaigns->PostVideos->find()
     ->matching('Campaings.ClientCampaings.UserClients',function(Query $query) use ($userId) {
         return $query->where(['UserClients.client_id' => $userId])
      }
    ->contain(['Campaigns.ClientCampaigns.UserClients'])
    ->count();