2012-03-13 47 views
2

我是Kohana框架的新手。我正在尝试在Kohana中使用ORM模块。 我的印象是,我必须为每个表格创建一个模型。 然后只有我可以通过这些模块访问表格。 这是正确的吗?任何人都可以解释关于在Kohana中使用ORM创建数据库访问模型的最佳实践吗?Kohana:我应该为每个使用ORM的表创建模型吗?

在此先感谢 Poomalairaj

+1

一般而言,我认为你应该问你需要什么样的表来实现你的模型。 – Matt 2012-03-13 10:55:34

+0

只需要提示您不需要为数据透视表创建模型,但如果除ID之外还没有其他数据。 如果您拥有has_many_through关系,则只需为两个主表创建模型,而不是为数据透视表创建模型。 – 2012-04-03 19:44:49

回答

3

当我们谈论的Kohana和ORM,是的,你很可能需要就是我们所说的实体,或将代表该表的典范。这是指定您的域名的最常用和推荐的方式。

请记住,Kohana模型的概念不符合一般概念。你可以拥有一个有点像商业逻辑实体的模型,它与数据库没有任何关系。

为了举例说明我的答案,如果你有一个简单的应用后,如Twitter或什么的,你有这样的事情:

class Model_User extends ORM { 
    protected $_table_name = 'user'; 

    protected $_primary_key = 'id'; 

    protected $_has_many = array('posts' => array()); 
} 

class Model_Post extends ORM { 
    protected $_table_name = 'post'; 

    protected $_primary_key = 'id'; 

    protected $_belongs_to = array('user' => array()); 
} 

如果你创建你的模型像这样的Kohana的ORM也会明白:

class Model_User extends ORM { 
    protected $_has_many = array('posts' => array()); 
} 

class Model_Post extends ORM { 
    protected $_belongs_to = array('user' => array()); 
} 

由于它的工作原理最通常与conventions over configurations.

随着指定的域名,就可以访问一些用户帖子这样:

$user->posts 

和后用户(作者)是这样的:

$post->user 

希望能澄清你的心!

2

您不必添加

protected $_primary_key = 'id'; 

每次添加模式,它是默认的关键,但如果你的关键是比“ID”等,你必须添加行,指定右键如“userId”。

相关问题