从belongsTo协会蛋糕php视图

时间:2014-10-26 12:33:25

标签: cakephp view models

我有两个包含以下列的表:监护人(id,student_no)学生(id,admission_no)。 student_no 外国 到admision_no。 学生 监护人 监护人 hasMany 关联>与 学生 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));
}

Guardian 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):非法字符串偏移&#39; first_name&#39; [APP / View / Guardians / view.ctp,第115行]

以及它下面的三行。究竟出了什么问题

1 个答案:

答案 0 :(得分:0)

进行一些调试:debug($guardian)

在你的belongsTo关联中,一个监护人只能有一个学生,所以你正在迭代那个单个学生的列,即因此$student变量将是一个字符串,因此错误。

另请参阅 Cookbook > Models > Associations > belongsTo