Я строил проект электронной документации по клинике/пациенту, основанный на кодеджигнере, и я решил отправиться в орм, так как у меня много отношений между моим бб.datamapper orm для codeigniter. о времени загрузки и отношениях
поэтому я загрузил datamapper 1.8.2 и начал новый проект codeigniter, первое, что я заметил, было время загрузки!
страница приветствия codeigniter теперь загружается в 1seC++! без какой-либо логики! это нормально ? и приемлемо ли это? обычно 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 поняли бы, что каждый пользователь в пользователях играет роль, и эта таблица посещает 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?
help?!
Что касается медленного времени загрузки: да, ORM замедлит вашу систему. Он предназначен для того, чтобы сделать вашу работу в качестве разработчика намного проще в работе со сложными базами данных. Вы жертвуете временем загрузки для более быстрого развития. Если это невыносимо, рассмотрите возможность использования Active Record или обновления вашей системы. –