CakePHP объединяет таблицы в форму - PullRequest
2 голосов
/ 29 июня 2011

Я только начал использовать CakePHP, и у меня есть вопрос. Я создаю своего рода систему диспетчера задач.

У меня есть таблица «Задачи», и в этой таблице есть поле user_id для назначения задачи пользователю.

Когда я запекла приложение, сгенерированная форма имеет user_id, который автоматически связывался с таблицей users, но я хочу показать username пользователя вместо user_id - как мне поступить? делать это?

Кроме того, мне нужно, чтобы при сохранении формы она сохраняла user_id в поле, а не username - поэтому для простоты использования необходимо отобразить username, но сохранить user_id.

Я все еще новичок во всей этой Модели и Контроллере, поэтому я не уверен, как мне удастся это сделать. Благодаря.

Обновление:

Вот где я сейчас нахожусь. В моей работе add.ctp я добавил этот код, чтобы помочь сгенерировать поле формы:

foreach ($users as $user):
    $options_array[$user['id']] = $user['username'];
endforeach;
print_r($options_array);
echo $this->Form->input('user_id', $options_array);

К сожалению, print_r дает мне:

Array ( [2] => 2 )

А не желаемый вывод:

Array ( [2] => Dan )

$users определяется в job_controller.php следующим образом:

$users = $this->Job->User->find('list');
$clients = $this->Job->Client->find('list');
$stages = $this->Job->Stage->find('list');
$this->set(compact('users', 'clients', 'stages'));

Я не уверен, что я делаю здесь не так.
Dan

1 Ответ

2 голосов
/ 29 июня 2011

Если вы ищете только идентификатор и имя пользователя, то использование списка должно быть классным, но вы должны указать поле имени пользователя.

$users = $this->Job->User->find('list', array('fields' => array('User.username'));

Это должно вернуть массив как таковой:

array (
  [1] => 'username_for_id_1',
  [2] => 'username_for_id_2',
  ...  all the other records...
  [114] => 'username for id_114'
)

Если вам нужна дополнительная информация из таблицы User, вам следует использовать -> find ('all').

$users->Job->User->find('all');
// $users is now:
// array (
//    [0] => array (
//        'User' => array(
//            'id' => 1,
//            'username' => 'username',
//             ... the rest of the fields
//         )
//        Other affiliated models will be included with the 'User' if 
//        you haven't set 'recursive' = -1
//    )
// )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...