0

我正在使用 CakePHP 3.4+

我有下表及其关联。

PostVideos ->belongsTo(活动) || PostVideos有列campaign_id

广告系列->hasMany( ClientCampaigns ) || ClientCampaigns有列campaign_id

UserClients ->hasMany( ClientCampaigns ) || ClientCampaigns有 coumn user_client_id

UserClients有列client_id

我想在UserClients中的client_id条件下选择/计数PostVideos

$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' 
4

1 回答 1

1

你必须为此matching使用

$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();

如果不需要加载UserClients可以跳过contain

于 2017-11-06T10:53:55.157 回答