2014-10-26 6 views
0

У меня есть две таблицы со следующими столбцами, опекунам (ID, student_no) и школьнику (идентификатор, admission_no). student_no иностранный to admision_no. студентов имеет hasMany ассоциации с опекунами, опекуны имеет belongsTo ассоциации с студентов. вот мои моделипросмотров торт PHP от belongsTo ассоциации

СТУДЕНТ

public $hasMany = array(
    'Guardian' => array(
     'className' => 'Guardian', 
     'foreignKey' => 'student_no', 
     'dependent' => true, 
     ) 
) 

GUARDIAN

public $belongsTo = array(
    'Student' => array(
     'className' => 'Student', 
     'foreignKey' => 'student_no', 
     ) 
) 

контроллер Гардиан

public function view($id = null) { 
    if (!$this->Guardian->exists($id)) { 
     throw new NotFoundException(__('Invalid guardian')); 
    } 
    $options = array('conditions' => array('Guardian.' . $this->Guardian->primaryKey => $id)); 
    $this->set('guardian', $this->Guardian->find('first', $options)); 
} 

Гардиан view.ctp (усеченный для просмотра только соответствующий студент из в модели Guardian)

<h3><?php echo __('Associated Students'); ?></h3> 
<?php if (!empty($guardian['Student'])): ?> 
<table cellpadding = "0" cellspacing = "0"> 
<tr> 
    <th><?php echo __('Admission No'); ?></th> 
    <th><?php echo __('First Name'); ?></th> 
    <th><?php echo __('Last Name'); ?></th> 
    <th><?php echo __('Gender'); ?></th> 
    <th><?php echo __('Date Of Birth'); ?></th> 
    <th><?php echo __('Join Date'); ?></th> 
    <th><?php echo __('Form'); ?></th> 
    <th><?php echo __('Student Class'); ?></th> 
    <th><?php echo __('Middle Name'); ?></th> 
    <th class="actions"><?php echo __('Actions'); ?></th> 
</tr> 
<?php foreach ($guardian['Student'] as $student): ?> 
    <tr>` 
     <td><?php echo $student['admission_no']; ?></td> 
line(115) <td><?php echo $student['first_name']; ?></td> 
     <td><?php echo $student['last_name']; ?></td> 
     <td><?php echo $student['gender']; ?></td> 
     <td><?php echo $student['date_of_birth']; ?></td> 
     <td><?php echo $student['join_date']; ?></td> 
     <td><?php echo $student['form']; ?></td> 
     <td><?php echo $student['student_class']; ?></td> 
     <td><?php echo $student['middle_name']; ?></td> 

    </tr> 
<?php endforeach; ?> 
</table> 

я могу просмотреть связанные родительские детали из студентов смотреть с выше аналогичного кода, однако в опекуны вид я получаю сообщение об ошибке для соответствующего опекуна

оШИБКА: Предупреждение (2): Illegal строка смещения 'first_name' [APP/View/опекуны/view.ctp, линия 115]

и три строки ниже it.what точно будет неправильно

ответ

0

У некоторых отладки: debug($guardian)

В вашем belongsTo assocaition, опекун может иметь только один студент, так что вы итерацию по столбцам что один ученик, т. е. переменная $student будет строкой, следовательно, будет ошибкой.

Смотрите также Cookbook > Models > Associations > belongsTo

+0

отладки $ gurdian показывает, что он имеет все соответствующие студент, а также после редактирования студента, я могу nolonger посмотреть, что студент, так как идентификатор передается для просмотра действий changes.dont знаю, почему – Gordon

+0

Если по _all_ вы имеете в виду _one _... @Gordon – ndm

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