Я новичок в cakePHP, и я занялся созданием очень небольшого проекта «Отчеты о состоянии», который позволил бы пользователю сообщать о своем текущем статусе по проекту, которому он был назначен.
В настоящее время я использую компоненты acl, auth и session, чтобы позволить многопользовательским пользователям управлять друг другом с помощью администратора, создавая пользователей, проекты и назначая их друг другу.Я также исправил это так, что, когда пользователь входит в систему и идет, чтобы добавить "статус", что их сеанс входа в систему автоматически заботится о "user_id" для статуса:
$this->data['Status']['user_id'] = $this->Auth->user('id');
Что мне нужно помочьсейчас нужно отфильтровать параметры проекта, которые пользователь может выбрать, чтобы добавить «статус».
В настоящее время у меня есть настройка с таблицей, которая содержит отношения между пользователями и проектами с именем * projects_users * с помощью *id, project_id, user_id * в качестве полей.Но после запуска этой настройки, когда пользователь добавляет «статус», в раскрывающемся меню отображаются все проекты, а не только те, которым они «назначены».
Я бы хотел отфильтроватьОпции пользователя для проектов, которым они назначены. Есть ли еще какие-то отношения, которые я должен установить, или это довольно простая маленькая функция для написания?Любая помощь будет принята с благодарностью, и если я опущу информацию, я был бы рад опубликовать что-нибудь еще.
Вот Модель состояния setup:
class Status extends AppModel {
var $name = 'Status';
//The Associations below have been created with all possible keys, those that are not needed can be removed
var $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Project' => array(
'className' => 'Project',
'foreignKey' => 'project_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
}
Моя Модель пользователя выглядит так:
var $belongsTo = array(
'Group' => array(
'className' => 'Group',
'foreignKey' => 'group_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
var $hasMany = array(
'Status' => array(
'className' => 'Status',
'foreignKey' => 'user_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
)
);
var $hasAndBelongsToMany = array(
'Project' => array(
'className' => 'Project',
'joinTable' => 'projects_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'project_id',
'unique' => true,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
);