2009-11-09 6 views
0

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

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

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

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

ответ

1

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

В RunController добавить

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

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

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

Это должно работать, есть также способ использования «компактный», чтобы сделать его немного легче, но выше должно работать нормально.

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

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

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

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

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

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

и форма помощник автоматически найдет уплотненного массива спортсмена и строить выбор.

---- END EDIT ----

Надеется, что это помогает.

Приветствия, Dean

0

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

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

0

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

<?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

Смежные вопросы