我是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"。