两个模型之间的关联不起作用
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
中,只有InformationTable
class的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)
使用 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
中,只有InformationTable
class的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)