2013-02-12 1 views
0

Я начинаю с 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 ..

+0

Все классы имеют одинаковое имя. –

+0

Нет была ошибка копирования и вставки, исправлено! Извините :) –

+0

Прежде чем я пойду и ответю, у меня возникло ощущение, что вы выбрали неправильные отношения между Моделями. Можете ли вы прояснить это для меня тогда. Я полагаю, что пользователь может иметь одну роль и один сеанс, правильно ли это? –

ответ

0

найдено решение

Моя проблема заключалась в том, что я предположил, что найти() и find_all() методы также perisist в вызывающей объект результатов запроса, а не только вернуть г esult. Большое спасибо каждому

 Смежные вопросы

  • Нет связанных вопросов^_^