Kohana 3.3 ORM关系

时间:2013-02-12 12:13:23

标签: php orm kohana-3 kohana-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 :: factory('Utente','Marco'); (或任何其他模型),一切都是很好。

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中直接执行的查询在ruoli上返回4个结果,在sessioni上返回两个结果。

1 个答案:

答案 0 :(得分:0)

找到解决方案

我的问题是我认为find()和find_all()方法也会在调用者对象中查询结果,而不是只返回结果。非常感谢每一个