CakePHP вопрос ассоциации - PullRequest
       11

CakePHP вопрос ассоциации

0 голосов
/ 10 ноября 2009

Я создаю небольшое приложение для составления расписания. В расписаниях есть спортсмены, и у каждого спортсмена есть индивидуальные времена разделения (например, в беге или гоночном автомобиле)

У спортсмена много пробежек, у него есть одна пробежка, у спортсмена есть и несколько расписаний (и наоборот). В расписании имеется много прогонов, и, наконец, прогон принадлежит расписанию.

Когда я добавляю новые прогоны в моем представлении, я не могу получить ничего, кроме athlete_id в поле выбора. Мне бы очень хотелось, чтобы вместо них были их имена. Вместо

<?php echo $run['athlete_id'];?>, я пробовал <?php echo $athlete['Athlete']['last_name'] ?>, но я не могу заставить его работать. Любая помощь будет принята с благодарностью. Спасибо!

Ответы [ 3 ]

1 голос
/ 10 ноября 2009

Не зная точно, как вы строите свои формы / данные, трудно сказать, но как бы я это сделал.

В RunController добавьте

$athletes = $this->Run->Athlete->find('list');
$this->set('athletes', $athletes);

и затем в представлении используйте эту вспомогательную строку формы.

<?php echo $form->input('Run.athlete_id', array('type' => 'select', 'options' => $athletes)); ?>

Это должно сработать, есть также способ использовать 'compact', чтобы сделать его немного проще, но вышеописанное должно работать нормально.

---- НАЧАЛО РЕДАКТИРОВАНИЯ ----

Я провел небольшое исследование и нашел компактный метод.

В вашем RunController используйте

$athletes = $this->Run->Athlete->find('list');
$this->set(compact('athletes'));

, а затем в вашем представлении использования

<?php echo $form->input('Run.athlete_id'); ?>

и помощник по форме автоматически найдет сжатый массив Athlete и создаст выбор.

---- Конец редактирования ----

Надеюсь, это поможет.

Ура, Декан

0 голосов
/ 12 ноября 2009

Не забудьте использовать свойство displayField класса Model, т.е.

<?php
    class Athlete extends AppModel {
        public $name = "Athlete";
        public $displayField = "name"; // the field name that has the athletes name in it
    }
?>

http://book.cakephp.org/view/438/displayField

0 голосов
/ 10 ноября 2009

Попробуйте распечатать содержимое $ run: print_r ($ run) и посмотрите, есть ли ['Athlete'].

Если нет, вам может потребоваться вручную указать модель спортсмена при выполнении запроса на запуск: $ This-> Подвижная> содержат ( 'спортсмена');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...