我试图让我的DomainTypes的儿童的DomainTypes表为我的DomainTypes视图()函数,但它抱怨“错误:SQLSTATE [42S22]:未找到列:1054未知列'Children.domain_type_id 'in'where clause'“问题是我的DomainTypes表没有domain_type_id列。 Domain表的确如此。这里是我的域名类型视图()的代码:关联查找错误的表
public function view($id) {
if (!$id) {
throw new NotFoundException(__('Invalid DomainType'));
}
$domainType = $this->DomainTypes
->find()
->where(['DomainTypes.id' => $id])
->contain(['Parent', 'Children', 'Affiliates'])
->first();
$this->set(compact('domainType'));
}
所以,有一点关于我的设置。我有2个表,域和DomainTypes。两者都使用树行为。
这里是一个域表的初始化代码:
public function initialize(array $config){
parent::initialize($config);
$this->displayField('name');
$this->addBehavior('Tree');
//Associations
$this->hasMany('Children', [
'className' => 'Domains',
]);
$this->belongsTo('Parent', [
'className' => 'Domains',
]);
$this->belongsTo('Affiliates');
$this->belongsTo('DomainTypes');
}
这里是为DomainTypes表初始化代码:
public function initialize(array $config){
parent::initialize($config);
$this->displayField('name');
$this->addBehavior('Tree');
//Associations
$this->hasMany('Children', [
'className' => 'DomainTypes',
]);
$this->belongsTo('Parent', [
'className' => 'DomainTypes',
]);
$this->belongsTo('Affiliates');
$this->hasMany('Domains');
}
两者非常相似,但也明确规定要使用的类名。为什么Cakephp 3假设我的DomainTypes表中有一个domain_type_id列?提前致谢!
如果我只使用belongsTo关系,这样做会有意义,但是因为hasMany应该使用childrens parent_id,所以不应该有“child_id”。如果你有一个parent_id和一个child_id,你会复制数据并打开你的网站,出现很多问题。或者我不明白你要去哪里? – MjGaiser 2014-09-20 14:36:22
@MjGaiser不,你说得对,我只是没有注意到,应该没有'child_id',CakePHP生成一个名为'domain_type_id'的FK实际上似乎是正确的。我会更新我的答案,并删除废话:) – ndm 2014-09-20 16:05:25