代码之家  ›  专栏  ›  技术社区  ›  legenda

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

  •  0
  • legenda  · 技术社区  · 10 年前

    开始使用CakePHP并喜欢它。然而,我陷入了这种进退两难的境地,我不知道如何解决这个问题。

    基本上,我有两种型号,出发和港口。表格如下所示:

    离开

    • 身份证件
    • 端口_源
    • 端口(_T)
    • 到达时间
    • 时间_发货

    港口

    • 身份证件
    • 名称
    • 地方
    • 忙碌的
    • 笔记

    现在我想列出所有的出发点,port_from和port_to包含来自端口的ID。 我不想只显示端口ID,而是想显示端口名,但我不知道该怎么做?

    使用两组$this->在我的出发控制器中设置,我可以显示Ports表中的值。 我一直在寻找解决方案,但我不认为归属于或拥有。这里的出路是什么?

    谢谢你的帮助。

    2 回复  |  直到 10 年前
        1
  •  0
  •   Holt 111111    10 年前

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

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

    那你就用 find read 要离开(在您的控制器中):

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

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

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

    你可以正常访问 Departure 信息使用:

    $departure['Departure']['time_arrival'] ;
    
        2
  •  0
  •   ADmad    10 年前

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

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

    现在,当您在 离开 结果数组中的模型,每个 离开 记录您将拥有相应的 PortFrom PortTo 记录。