我有两个模型:Contacts 和 Groups with belongsToMany 关联。
我只想获取联系人可以访问的组。为此,我有一个自定义查找器。
public function findAccessible(Query $query, array $options){
return $query
->where(['admin_user_id' => $options['User.id']])
->orWhere(['public' => true])
->matching('Users', function($q) use ($options){
return $q->orWhere(['Users.id' => $options['User.id']]);
});
}
所以我可以打电话给关注,我会得到我想要的。
$accessibleGroups = $this->Contacts->Groups->find('accessible', ['User.id' => $this->Auth->user('id')]);
但是,如果我有一个包含,那么它将返回所有组,而不仅仅是可访问的组。
$contact = $this->Contacts->get($id, [
'contain' => ['Groups']
]);
如何将包含限制为可访问?
我无法将自定义查找器添加到表关联定义的查找器属性中,因为我无法在那里传递 $options。或者我可以吗?