我有DefaultPermissions
表,因此设置了default permissions
,我想将此集与受特定网站影响的permissions
集进行比较,以查看是否存在附加默认权限
所以我写了以下查询:
$defaultPermissions = $this->DefaultPermissions
->find()
->select([
'user_id' => $selUser->id,
'role',
'sequence',
'product',
'module',
'item',
'value',
'visible',
'editable'
])
->join([
'p' => [
'table' => 'permissions',
'type' => 'LEFT',
'conditions' => [
'p.product = DefaultPermissions.product',
'p.module = DefaultPermissions.module',
'p.item = DefaultPermissions.item',
'p.site_id' => $selSite->id // My problem is here!
]
]
],
[
'p.product' => 'varchar',
'p.module' => 'varchar',
'p.item' => 'varchar',
'p.site_id' => 'integer'
])
->where([
'DefaultPermissions.role' => $selUser->role,
'p.item IS' => NULL, // item doit toujours être présent donc si null, la ligne est absente.
'OR' => [['DefaultPermissions.product' => $agplan->product->code], ['DefaultPermissions.product' => '']]
])
->all();
但是,尽管可以找到网站defaultPermissions
的所有selSite->id
,但查询会提供DefaultPermissions
表中存在的完整列表。
如果我删除行'p.site_id' => $selSite->id
,则列表按预期为空,因此我得出结论,传递的参数没有很好地解释。
怎么做?
答案 0 :(得分:0)
连接中只有语法错误:
->join([
'p' => [
'table' => 'permissions',
'type' => 'LEFT',
'conditions' => [
'p.product = DefaultPermissions.product',
'p.module = DefaultPermissions.module',
'p.item = DefaultPermissions.item',
'p.site_id = ' => $selSite->id // '=' was missing
]
]
],
....