我是一個CakePHP的新手,我已經開始創建一個非常小的「狀態報告」項目,這將允許用戶報告他們當前的狀態在他們被分配的項目上。belongsTo關係和蛋糕過濾PHP
我目前正在使用acl,auth和會話組件來允許多層用戶使用管理員創建用戶,項目並將它們分配給彼此來管理另一個用戶。我也有固定的,這樣當用戶登錄並進入添加一個「狀態」,他們的登錄會話自動將「USER_ID」的狀態的護理:
$this->data['Status']['user_id'] = $this->Auth->user('id');
我需要什麼幫助,現在做過濾用戶可以選擇添加「狀態」到的項目的選項。
我目前有一個表格,該表格包含用戶名和* projects_users *與* id,project_id,user_id *作爲字段的項目之間的關係。但是,烘烤此設置後,當用戶添加「狀態」時,下拉菜單提供所有項目,而不是嚴格指定它們「分配給」的項目。
我想將用戶的選項過濾到分配給他們的項目。我應該建立更多的關係嗎?或者這是一個很容易寫的小函數?任何幫助將不勝感激,如果我遺漏了信息,我很樂意發佈任何其他內容。
這裏是狀態型號設置:
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' => ''
)
);
我的當前表project_users是否保存了用戶和項目之間的關係?它目前擁有project_id和user_id。理想情況下,我想讓用戶表保持清潔,並有可能在項目中擁有多個用戶。 現在,當我檢索一個用戶時,我看到他們的關聯項目,但是我限制最低的用戶只能添加一個「狀態」。因此,我想在那裏檢索會話的活動用戶關聯項目。 我也將我的用戶模型添加到我的原始帖子中。 –
這是一個HABTM表格。如果存在N:M關係,那很好。看起來就像這裏的情況。你需要在這裏使用一個自定義連接來將這些關係放在find語句中。請參閱食譜瞭解詳情 – mark
@Curtis請在添加狀態時顯示您正在使用的檢索項目的代碼。 –