CakePHP 3在两个表之间关联

时间:2016-01-16 01:15:05

标签: cakephp cakephp-3.0

我正在尝试在cakephp 3中创建两个模型(服务器和application_endpoints)表之间的关联。我想要实现的是将所有数据从application_endpoints表获取到服务器模型。所以在视图中我可以访问所有数据。

服务器可以在application_endpoints表中有多个VIP和端点,我正在使用hasMany关联。所以在ServersTable.php中我添加了以下代码:

$this->hasMany('ApplicationEndpoints', [
            'foreignKey' => 'server_id',
            'dependent' => true
        ]);

因此,当我浏览服务器视图页面并单击变量选项卡内的调试工具包时,我看不到任何连接。我看到数组中的服务器列表,但是数组中的每个服务器都没有显示与application_endpoints表的任何关系。

请评论并告诉我,如果不清楚,我也链接sqlfiddle关于mysql架构。

更新1

我也在ServersTable.php中尝试了这段代码:

$this->belongsTo('ApplicationEndpoints', [
            'bindingKey' => 'server_id',
            'joinType' => 'INNER',
        ]);

1 个答案:

答案 0 :(得分:0)

所以hasMay是在两个模型之间建立关联的正确方法。

    $this->hasMany('ApplicationEndpoints', [
        'foreignKey' => 'server_id',
        'dependent' => true
    ]);

我不得不在服务器的控制器中添加额外的代码,以使其与下面的代码一起使用:

    // View method
    $query = $this->Servers->get($id, [
        'contain' => ['ApplicationEndpoints']
    ]);
    $this->set('data', $query);