在Index.php中,从我对Turno的看法来看,我有:

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

这个代码工作正常。但是我想显示“Complejo”的id,“Complejo”是“Cancha”的外键。所以。。。我想导航两次。。像这样的:
    <?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>

但不起作用。我怎么能导航两次?“Turno”和“Cancha”之间的连接正常,“Cancha”和“Complejo”之间的连接正常。
谢谢!
编辑
表之间的关系是:
完整的:
$this->hasMany('Canchas', [
        'foreignKey' => 'complejoFK'
    ]);

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

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

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

最佳答案

必须将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
     ]) : '' ?>

关于php - 通过cakephp中的外键显示数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38004991/

10-11 05:15