Простая ассоциация с CakePHP - PullRequest
0 голосов
/ 12 октября 2011

Я недавно начал изучать 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.

Ответы [ 2 ]

1 голос
/ 12 октября 2011

Я наконец-то нашел ответ в документации (http://book.cakephp.org/view/1390/Automagic-Form-Elements).

И решение есть: контроллер группы в методе add:

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

И в представлении:

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

Красиво и просто. В любом случае, спасибо!

0 голосов
/ 12 октября 2011

Вы должны установить переменную в функции add-group контроллера группы:
$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));

...