CakePHP3:无法正常匹配

时间:2017-05-07 17:55:29

标签: cakephp associations filtering query-builder cakephp-3.x

如果我写下面的查询:

$sites = $this->Sites->find()
->contain(['Agthemes'])
->matching('Agthemes', function ($q) {
    return $q->where([
        'Agthemes.site_id IS NOT' => null
    ]);
})
->all();

我只获得Sites已存在的Agthemes

现在我编写了一个类似的查询,但还有一个额外的关联级别:

$users = $this->Users->find('all')
->contain([
    'Sites.Agthemes'
])
->matching('Sites.Agthemes', function ($q) {
    return $q->where([
        'Agthemes.site_id IS NOT' => null
    ]);
})
->distinct(['Users.id'])
->limit(5)
->all();

在这种情况下,我的SitesAgthemes。 你能告诉我为什么吗?

修改

我添加关系

SitesTable

    $this->hasMany('Agthemes', [
        'dependent' => true,
        'cascadeCallbacks' => true,
    ]);

    $this->belongsToMany('Users', [
        'joinTable' => 'sites_users',
    ]);

UsersTable

    $this->belongsToMany('Sites', [
        'targetForeignKey' => 'site_id',
        'joinTable' => 'sites_users',
    ]);

AgthemesTable

    $this->belongsTo('Sites');

0 个答案:

没有答案