【发布时间】:2024-04-29 18:05:02
【问题描述】:
我在从关系中获取所有数据时遇到问题。这是我的表格:
**Regions**
id(pk)
regions_name
**Areas**
id(pk)
areas_name
regions_id (fk)
**carDealer**
id(pk)
dealer_name
areas_id(fk)
我认为通过这种设计,我应该能够像这样查询区域:
$this->Region->recursive = 5;
$getRegions = $this->Region->find('all');
然后得到一个包含所有 Regions 的数组,其中包含一个 Areas 子数组,该数组包含一个 carDealers 子数组。
我的代码只带回 Regions 和 Areas 数组,但不带回 carDealers。这是我的模型的一些相关代码:
区域表
<?php
App::uses('AppModel', 'Model');
class Region extends AppModel {
public $validate = array(
);
public $belongsTo = array(
);
public $hasMany = array(
'Areas' => array(
'className' => 'Areas',
'foreignKey' => 'regions_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
);
}
面积表:
<?php
App::uses('AppModel', 'Model');
class Area extends AppModel {
public $validate = array(
);
public $belongsTo = array(
'Regions' => array(
'className' => 'Regions',
'foreignKey' => 'regions_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
);
public $hasMany = array(
'carDealer' => array(
'className' => 'carDealer',
'foreignKey' => 'areas_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
);
}
汽车经销商表:
<?php
App::uses('AppModel', 'Model');
class carDealer extends AppModel {
public $validate = array(
);
public $belongsTo = array(
'Areas' => array(
'className' => 'Areas',
'foreignKey' => 'areas_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
);
public $hasMany = array(
);
}
我是否在我的模特关系中遗漏了什么?
谢谢 杰森
【问题讨论】:
-
请book.cakephp.org/2.0/en/models/model-attributes.html#recursive递归 $this->Region->recursive = 5;只有 -1、0、1、2 存在。
-
您需要检查蛋糕命名约定,当您的 className 显然是
Region时,您会说public $belongsTo = array('Areas' => array('className' => 'Areas',,以及许多其他类似的微小重要细节。book.cakephp.org/2.0/en/getting-started/… -
Last comment failed...“当你的 className 明显是
RegionArea”(但Region也会发生这种情况) -
谢谢 Nunser,这就是问题所在。我认为该数组应该指向实际的表名(在我的模式中是复数)。我将它切换为实际的类名并且有效。如果您将此作为回复发布,我会给您积分。
-
chetan 显然在他的答案上付出了努力,它解决了您的代码的所有问题。接受。也许下次我会添加一个完整的答案:)
标签: cakephp cakephp-2.1 cakephp-2.3 cakephp-model