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

CakePHP:基于主键显示存储在另一个模型中的值,php,cakephp,primary-key,cakephp-model,Php,Cakephp,Primary Key,Cakephp Model,开始使用CakePHP并热爱它。然而,我被困在这个noob的情况下,我不知道该怎么解决这个问题 基本上,我有两种型号,离港和港口。这些表如下所示: 出发时间 身份证 港口从 杜港 到达时间 出发时间 端口 身份证 名字 位置 活跃的 注 现在我想列出所有的出发点,port_from和port_to包含来自ports的ID我不想只显示端口ID,而是想显示端口名,但我不知道如何才能做到这一点? 在我的出发控制器中使用两组$this->set,我可以显示端口表中的值。我一直在寻找解决方案,但我

开始使用CakePHP并热爱它。然而,我被困在这个noob的情况下,我不知道该怎么解决这个问题

基本上,我有两种型号,离港和港口。这些表如下所示:

出发时间

  • 身份证
  • 港口从
  • 杜港
  • 到达时间
  • 出发时间
端口

  • 身份证
  • 名字
  • 位置
  • 活跃的
现在我想列出所有的出发点,port_from和port_to包含来自ports的ID我不想只显示端口ID,而是想显示端口名,但我不知道如何才能做到这一点?

在我的出发控制器中使用两组$this->set,我可以显示端口表中的值。我一直在寻找解决方案,但我不认为贝隆斯托(belongsTo)或哈斯曼(hasMany)是解决问题的方法


谢谢您的帮助。

您可以在
出发
模式中设置两个belongsTo关联

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

现在,当您在结果数组中对
出发
模型执行find()时,对于每个
出发
记录,您将拥有相应的
端口from
端口to
记录。

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

class Departure extends AppModel {
    public $belongsTo = array(
        'From' => array(
            'className' => 'Port',
            'foreignKey' => 'port_from'
        ),
        'To' => array(
            'className' => 'Port',
            'foreignKey' => 'port_to'
        )
    ) ;
} ;
然后您只需使用
find
read
即可(在您的控制器中)离开:

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

$departure['From']['name'] ;
$departure['To']['name'] ;
您可以通过以下方式访问正常的
离港
信息:

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

非常感谢你!你和@ADmad为我节省了大量的时间和头痛!这很快就奏效了。
$departure['Departure']['time_arrival'] ;