我正在建立一個基於codeigniter的診所管理/病人電子記錄項目,我決定去一個orm,因爲我的db之間有很多關係。datamapper orm for codeigniter。關於加載時間和關係
所以我下載了datamapper 1.8.2並開始新的codeigniter項目,我注意到的第一件事是加載時間!
codeigniter歡迎頁面現在正以1seC++加載!沒有任何邏輯!這是正常的嗎?這是可以接受的嗎?通常ci會在我的機器上加載0.002秒,但是datamapper orm其1.06最好!
secound問題是關於關係。
我有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的會理解,用戶中的每個用戶都有一個角色,並且該表訪問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或升級您的系統。 – 2013-02-21 17:54:20