Я начинаю с Kohana 3.3 ORM пытается применить его к существующему внутреннему проекту.Kohana 3.3 ORM отношения
Проект используется, поэтому я не могу изменить имена схемы. Существующее определение схемы заключается в следующем:
Table: utente
idUtente VARCHAR PK
nome VARCHAR
// other fields
Table: sessione
idSessione SERIAL PK
idUtente VARCHAR (FK to utente.idUtente)
// other fields
Table: ruolo
idRuolo SERIAL PK
nome VARCHAR
//other fields
Table: ruoloutente
idRuolo PK (FK to ruolo.idRuolo)
idUtente PK (FK to utente.idUtente)
scadenza DATETIME
// other fields
Теперь я определено пользовательское имя таблицы и пользовательские основное имя ключа в модели, и если я использую ORM :: завод («Utente», «Марко»); (или любая другая модель) все идет хорошо.
class Model_Utente extends ORM {
protected $_table_name ='utente';
protected $_primary_key ='idUtente';
protected $_has_many =
array(
'ruoli' => array(
'model' => 'Ruolo',
'far_key' => 'idRuolo',
'foreign_key' => 'idUtente',
'through' => 'ruoloutente',
),
'sessioni' => array(
'model' => 'Sessione',
'far_key' => 'idSessione',
'foreign_key' => 'idUtente',
),
);
// class logic here
}
class Model_Ruolo extends ORM {
protected $_table_name ='ruolo';
protected $_primary_key ='idRuolo';
protected $_has_many =
array(
'utenti' => array(
'model' => 'Utente',
'far_key' => 'idUtente',
'foreign_key' => 'idRuolo',
'through' => 'ruoloutente',
),
);
// class logic here
}
class Model_Sessione extends ORM {
protected $_table_name ='sessione';
protected $_primary_key ='idSessione';
protected $_belongs_to =
array(
'utente' => array(
'model' => 'Utente',
'far_key' => 'idUtente',
'foreign_key' => 'idUtente',
),
);
// class logic here
}
Теперь из экземпляра Utente я выполнить
$this->ruoli->find_all()и
$this->sessioni->find_all(), но я получить пустую модель на обоих .. Сформированный запрос корректен на обоих нахождения, запрос выполняется непосредственно в SQL возвращает 4 результаты на ruoli и два результаты по sessioni ..
Все классы имеют одинаковое имя. –
Нет была ошибка копирования и вставки, исправлено! Извините :) –
Прежде чем я пойду и ответю, у меня возникло ощущение, что вы выбрали неправильные отношения между Моделями. Можете ли вы прояснить это для меня тогда. Я полагаю, что пользователь может иметь одну роль и один сеанс, правильно ли это? –