2017-11-06 2 views
0

Ich benutze CakePHP 3.4+Filter auf einnehmbar in CakePHP 3

Ich habe folgende Tabellen und ihre Zuordnung.

PostVideos -> gehört zu (Kampagnen) || PostVideos hat Spalte campaign_id

Kampagnen -> hasMany (ClientCampaigns) || ClientCampaigns hat Spalte campaign_id

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

UserClients Spalte CLIENT_ID

ich wollen select/zählen auf PostVideos mit Bedingung auf CLIENT_ID in UserClients

$count['videos']['uploaded'] = $this->Campaigns->PostVideos->find() 
    ->where(['UserClients.client_id' => $this->Auth->user('id')]) 
    ->contain(['Campaigns.ClientCampaigns.UserClients']) 
    ->count(); 

Aber es gibt Datenbankfehler als

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'UserClients.client_id' in 'where clause' 

Antwort

0

Sie haben matching zu verwenden, die für

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

Wenn Sie UserClients laden nicht benötigen Sie contain überspringen.