两个模型之间的关联不起作用

Association between two models not working

使用 CakePHP 3.0,我有(除其他外)两个关联的模型:

<?php
    # src/Model/Table/InformationTable.php

    namespace App\Model\Table;

    class InformationTable extends AppTable
    {
        public function initialize(array $config) {
            parent::initialize($config);

            $this->belongsTo('Contractor');
            $this->belongsTo('InformationField');
        }
    }

?>

<?php
    # src/Model/Table/InformationFieldsTable.php

    namespace App\Model\Table;

    class InformationFieldsTable extends AppTable
    {
        public function initialize(array $config) {
            parent::initialize($config);

            $this->hasMany('Information');
        }
    }

?>

在与这些模型相关的 Contractors 控制器中,以下工作正常:

$this->Contractors->Information

但是当我尝试访问 InformationFields 模型时,出现错误:

$this->Contractors->Information->InformationFields

Table "App\Model\Table\InformationTable" is not associated with "InformationFields"

我用 Inflector class 和 "Information"<->"Information" 和 "InformationField"<-> 的单复数做了一些测试"InformationFields" 按预期工作。

此外,当在两个模型 initialize() 方法中放置 debug() 调用并通过 TableRegistry 获取模型时,两个 initialize() 方法肯定会被调用。但是在上面的场景$this->Contractors->Information->InformationFields中,只有InformationTableclass的initialize()方法是运行.

我卡在这一点上了。 为什么关联不能正常工作?

编辑:这里还有一些测试用例:

$informationTable = TableRegistry::get('Information');
debug($informationTable->InformationFields);
#Error: Table "App\Model\Table\InformationTable" is not associated with "InformationFields"

$informationFieldsTable = TableRegistry::get('InformationFields');
debug($informationFieldsTable->Information);
#No Error

您在本该

的时候写了$this->belongsTo('InformationField');

$this->belongsTo('InformationFields');(带 s)