与CakePHP的简单关联

时间:2011-10-12 19:27:34

标签: php cakephp cakephp-appmodel form-helpers

我最近开始研究CakePHP - 我到目前为止都很喜欢它。但是,我需要提出一个相当简单的问题:

关于模特协会。我有2个型号用户和组。用户可以拥有多个组,而一个组只能拥有一个用户。所以我做到了这样:

<?php
class Group extends AppModel {
    var $name = 'Group';
    var $belongsTo = 'User'; 
}
?>

<?php
class User extends AppModel {
    var $name = 'User';
    var $hasMany = 'Group'; 
}
?>

然后在添加组页面上,我希望可以从下拉列表中选择用户。我的群组添加视图如下:

<h1>Add Group</h1>
<?php
echo $this->Form->create('Group');
echo $this->Form->input('user_id');
echo $this->Form->input('name');
echo $this->Form->input('pincode');
echo $this->Form->input('private');
echo $this->Form->end('Create group');
?>

user_id会自动转换为下拉列表 - 但是没有任何选项。我需要做什么?我假设我需要放置一个应该从User表中获取“名称”的地方。

2 个答案:

答案 0 :(得分:1)

我终于在文档中找到了答案(http://book.cakephp.org/view/1390/Automagic-Form-Elements)。

解决方案是: add方法中的组控制器:

$this->set('users', $this->Group->User->find('list'));

在视图中:

echo $this->Form->input('user_id');

美好而简单。不管怎样,谢谢!

答案 1 :(得分:0)

您应该在组控制器的添加组功能中设置变量:
$users = $this->Group->User->find('all', array('fields' => array('DISTINCT User.user_id')));
$this->set('user_ids', $users);

然后在视图中,创建如下输入:
echo $this->Form->input('user_id', array('options' => $user_ids));