CakePHP:根据主键显示存储在另一个模型中的值

时间:2014-07-26 14:35:15

标签: php cakephp primary-key cakephp-model

开始使用CakePHP并喜欢它。但是我陷入了这种状态,我不知道解决这个问题的方法。

基本上,我有两个模型,离港和港口。表格如下所示:

出发

  • ID
  • port_from
  • port_to
  • time_arrival
  • time_departure

端口

  • ID
  • 名称
  • 位置
  • 活性
  • 注释

现在我要列出所有离开,port_from和port_to包含来自端口的ID。 我不想只显示端口ID,而是想显示端口名称,但我不知道如何做到这一点?

在我的Departures控制器中使用两组$ this->设置,我可以显示Ports表中的值。 我一直在寻找解决方案,但我不认为belongsTo或hasMany是什么方式去这里?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以在Departure模型中设置两个belongsTo关联。

$belongsTo = array(
    'PortForm' => array(
        'className' => 'Port',
        'foreignKey' => 'port_from'
    ),
    'PortTo' => array(
        'className' => 'Port',
        'foreignKey' => 'port_to'
    ),
);

现在,当您在结果数组中的Departure模型上执行find()时,对于每个Departure记录,您将拥有相应的PortFromPortTo条记录。< / p>

答案 1 :(得分:0)

您必须在模型中设置关系:

class Departure extends AppModel {
    public $belongsTo = array(
        'From' => array(
            'className' => 'Port',
            'foreignKey' => 'port_from'
        ),
        'To' => array(
            'className' => 'Port',
            'foreignKey' => 'port_to'
        )
    ) ;
} ;

然后您只需使用findread即可离开(在您的控制器中):

$this->set('departure', $this->Departure->read(null, $id)) ;

在视图中,您可以使用以下方式访问端口名称:

$departure['From']['name'] ;
$departure['To']['name'] ;

您可以使用以下方式访问正常的Departure信息:

$departure['Departure']['time_arrival'] ;