Kohana:我应该为ORM使用的每个表创建模型吗


Kohana: should I create models for every table I have for using with ORM?

我是Kohana框架的新手。我正在尝试在Kohana中使用ORM模块。我的印象是,我必须为我拥有的每一张桌子创建一个模型。然后只有我可以通过这些模块访问这些表。这是正确的吗?有人能解释一下在Kohana中使用ORM创建数据库访问模型的最佳实践吗?

提前感谢Poomalairaj

当我们谈论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());
}

因为它通常使用约定而不是配置。

指定该域后,您可以访问一些用户的帖子,如下所示:

$user->posts

像这样的帖子用户(作者):

$post->user

希望能澄清你的想法!

您不必添加

protected $_primary_key = 'id';

您添加的每个模型,它都是默认键,但如果您的键不是"id",则必须添加行,指定正确的键,如"userId"。