通过cakephp中的外键显示数据

时间:2016-06-24 03:02:49

标签: php mysql cakephp

在我的Turno视图的Index.php中

我有这个:

<?php foreach ($turnos as $turno): ?>
    <tr>
        <td><?= $turno->has('cancha') ? $this->Html->link($turno->cancha->idCancha, ['controller' => 'Canchas', 'action' => 'view', $turno->cancha->idCancha]) : '' ?></td>
    </tr>

此代码正常。 但是我想要显示&#34; Complejo&#34;和&#34; Complejo&#34;的ID是&#34; Cancha&#34;的外键。 所以...我想要导航两次..这样的事情:

    <?php foreach ($turnos as $turno): ?>
    <tr>
        <td><?= $turno->has('cancha')->('complejo') ? $this->Html->link($turno->cancha->complejo->idComplejo, ['controller' => 'Canchas', 'action' => 'view', $turno->cancha->->complejo->idComplejo]) : '' ?></td>
    </tr>

但是没有用。我怎么能导航两次? &#34; Turno&#34;之间的联系和&#34; Cancha&#34;好的,&#34; Cancha&#34;之间的联系和&#34; Complejo&#34;没关系。

谢谢!

修改 表之间的关系是:

在ComplejosTable中:

$this->hasMany('Canchas', [
        'foreignKey' => 'complejoFK'
    ]);

在CanchasTable中:

$this->belongsTo('Complejos', [
        'foreignKey' => 'complejoFK',
        'joinType' => 'INNER'
    ]);

$this->hasMany('Turnos', [
    'foreignKey' => 'canchaFK'
    ]);

在TurnosTable中:

$this->belongsTo('Canchas', [
        'foreignKey' => 'canchaFK',
        'joinType' => 'INNER'
    ]);

1 个答案:

答案 0 :(得分:1)

您必须将Complejos添加到包含的表

'contain' => ['Canchas', 'Canchas.Complejos', 'Usuarios']

所以你可以做到

 <?= $turno->has('cancha') && $turno->cancha->has('complejo') ?
     $this->Html->link($turno->cancha->complejo->nombre,  [
        'controller' => 'Complejos',
        'action' => 'view', 
        $turno->cancha->complejo->id_complejo
     ]) : '' ?>