在CakePHP 3中过滤可容纳的内容

时间:2017-11-06 10:00:24

标签: cakephp cakephp-3.4

我正在使用CakePHP 3.4 +

我有以下表格及其关联。

PostVideos - > belongsTo(广告系列)|| PostVideos campaign_id

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

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

UserClients client_id

我希望在用户客户

中的 client_id 条件选择/计数 后视频
$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' 

1 个答案:

答案 0 :(得分: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