【发布时间】:2013-02-21 16:40:45
【问题描述】:
我正在构建一个基于 codeigniter 的诊所管理/患者电子记录项目,我决定选择一个 orm,因为我的数据库之间有很多关系。
所以我下载了 datamapper 1.8.2 并开始了一个新的 codeigniter 项目,我首先注意到的是加载时间!
codeigniter 欢迎页面现在可以在 1 秒 ++ 内加载!还没有任何逻辑!这是正常的吗?它可以接受吗?通常 ci 在我的机器上加载 0.002 秒,但 datamapper orm 最好是 1.06!
第二个问题是关于关系的。
例如,我有 2 张桌子
表 1 用户。我用来存储我所有的办公室人员,并有角色
示例(用户)
|ID|name|role |
|1 |Demo|admin |
|2 |Demo|doctor |
|3 |Demo|nurse |
|4 |Demo|patient|
第二张表是访问
|id|doctor_id|patient_id|.....
|1 |2 |4 |......
那么我该如何设置,以便 datamapper 了解 users 中的每个用户都有一个角色,并且该表访问 has_one(doctors,patient) 和用户(医生,患者)has_many(visits) ?
因为每次就诊必须只有一位医生和一位患者,但每位患者/医生可以多次就诊。
当前设置试用
class Visit extends DataMapper {
var $has_one = array(
'doctor' => array(
'class' => 'user',
'join_self_as' => 'doctor_id',
'other_field' => 'visit'
),
'patient' => array(
'class' => 'user',
'join_self_as' => 'patient_id',
'other_field' => 'visit'
)
);
var $has_many = array();
用户
class User extends DataMapper {
var $has_one = array();
var $has_many = array(
'visit' => array(
'class' => 'visit',
'other_field' => 'doctor_id',
'join_self_as' => 'doctor_id',
)
);
但是当我尝试访问医生时
$u=new user(2);
$u->visit->get();
它给我错误
DataMapper Error: 'doctor_id' is not a valid parent relationship for Visit. Are your relationships configured correctly?
帮助?!
【问题讨论】:
-
关于缓慢的加载时间:是的,ORM 会减慢您的系统速度。它旨在使您作为开发人员的工作更容易处理复杂的数据库。您牺牲加载时间来加快开发速度。如果无法忍受,请考虑使用 Active Record 或升级您的系统。
标签: php codeigniter codeigniter-datamapper