【发布时间】:2014-01-23 22:51:34
【问题描述】:
问这个问题我觉得很愚蠢,但我很困惑,可能是因为我对 cakePHP 有点害怕(对它来说是新的,而且不是很舒服),但它的优点实际上迫使我使用它。因此,如果您能提供帮助,我将不胜感激:
我的问题是了解模型关联的工作原理。在阅读完这里所有关于关联的部分之后,我仍然在苦苦挣扎,实际上我不太确定我的数据库设计是否有缺陷,或者模型之间的关联是否错误。
这里是:我有 3 个模型,它们是: 供体、血型、供体类型
首先,我不完全确定是否应该为数据库中的每个表创建一个模型。 我的表是这样的:
+-------donors-------+
| donor_id (pk) |
| name |
| surname |
| donor_type_id (fk) |
| blood_group_id (fk)|
| |
+--------------------+
+----donor_types-----+
| type_id (pk) |
| type |
| |
+--------------------+
+----blood_groups----+
| blood_group_id(pk) |
| group |
| |
+--------------------+
捐助模式
class Donor extends AppModel{
public $hasOne = array(
'BloodGroup'=> array(
'className' => 'BloodGroup'
),
'DonorType' => array(
'className' => 'DonorType'
)
);
根据数据库中的表,上面是如何描述关系的。我已经在使用该关联来注册一个新的捐赠者,该捐赠者使用从血型表/模型中检索到的值,在我的控制器中使用以下代码:
$this->set('bloodGroups', $this->Donor->BloodGroup->find('list', 数组('字段' => 数组( 'BloodGroup.blood_group_id','BloodGroup.blood_group' ) ) ));
因此我认为该关联是正确的。但是,现在我想显示存储的用户以及相关的详细信息,但是正在生成一个 sql 错误:
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'BloodGroup.donor_id' in 'on clause'
这当然是因为 BloodGroup 表中没有作为 fk 的“donor_id”,实际上在供体表中存在作为 fk 的 blood_group_id。 那么解决这个问题的方法是什么? db 设计有缺陷还是有办法重新定义 cake 中的关联?
【问题讨论】:
标签: database cakephp cakephp-model