У меня есть следующие таблицы: связыватели, документы, пользователи, docs_users. Док принадлежит Биндеру, у ДокА есть пользователь, принадлежащий пользователю.
Я хочу получить связыватели и связанные с ними документы для пользователя, который в данный момент вошел в систему (связанный идентификатор_пользователя в таблице docs_users).
Я пробовал Containable и находил ('all') с объединениями, условиями и т. Д., Но я не могу понять, как удалить Документы от Пользователей, которые не связаны в таблице docs_users.
Этот код НЕ работает:
$binders = $this->Binder->find(
'all',
array(
'joins' => array(
array(
'table' => 'binders_users',
'alias' => 'BindersUser',
'type' => 'inner',
'foreignKey' => false,
'conditions'=> array(
'BindersUser.binder_id = Binder.id',
'BindersUser.user_id = ' . $this->Auth->user('id')
)
),
array(
'table' => 'docs',
'alias' => 'Doc',
'type' => 'left',
'foreignKey' => false,
'conditions'=> array(
'Doc.binder_id = Binder.id',
)
),
array(
'table' => 'docs_users',
'alias' => 'DocsUser',
'type' => 'left',
'foreignKey' => false,
'conditions'=> array(
'DocsUser.doc_id = Doc.id',
'DocsUser.user_id = ' . $this->Auth->user('id')
)
)
),
'recursive'=>0
)
);
$this->set('binders', $binders);
И это тоже не так:
$this->Binder->recursive = 2;
$this->Binder->Behaviors->attach('Containable');
$this->Binder->contain(array(
'Branch',
'Doc' => array(
'User' => array(
'DocsUser' => array(
'conditions' => array('id = "17"')
)
)
)
));
$binders = $this->Binder->find('all');
Любая помощь от ваших опытных профессионалов была бы великолепна! Спасибо!
Альтернативные / упрощенные решения?
Это работает, если я просто хочу получить привязки, к которым у пользователей есть разрешения. Коротко и сладко. Тем не менее, он все равно будет отправлять ВСЕ связанные документы через, что НЕ является желаемым поведением. Он должен только передавать документы, на которые у пользователя есть разрешения (как описано ранее).
$binders = $this->Binder->find(
'all',
array(
'joins' => array(
array(
'table' => 'binders_users',
'alias' => 'BindersUser',
'type' => 'inner',
'foreignKey' => false,
'conditions'=> array(
'BindersUser.binder_id = Binder.id',
'BindersUser.user_id = ' . $this->Auth->user('id')
)
)
)
)
);