设为首页收藏本站
查看: 88|回复: 0

[PHP] KohanaORM对象关系类型及其用法(Kohana3.3)

[复制链接]

论坛元老

Rank: 6Rank: 6

积分
34274
主题
17031
UID
1347
M币
67
贡献
17176

  • 发表于 2014-3-27 00:19:00 | 显示全部楼层 |阅读模式
    Kohana ORM对象有4种关系类型
    belongs_to(多对一), has_many(一对多), has_many "through"(多对多)和 has_one(一对一).
    他们的用法也比较简单,我用了两个表做测试,
    article表:
    CREATE TABLE IF NOT EXISTS `article` ( `aid` int(10) unsigned NOT NULL AUTO_INCREMENT, `cid` int(11) NOT NULL, `title` varchar(255) CHARACTER SET utf8 NOT NULL, `content` text CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`aid`) ) ENGINE=MyISAM;
    category表:
    CREATE TABLE IF NOT EXISTS `category` ( `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=MyISAM
    它们的关系很显然:
    一个article 属于一个category   (belongs_to)
    一个category可以有多个article  (has_many)
    则在article模型中:
    //多篇文章对应一个分类 protected $_belongs_to = array( 'category' => array( 'model' => 'category', 'foreign_key' => 'cid' ) );
    在category模型中:
    //一个分类拥有多篇文章 protected $_has_many = array( 'articles' => array( 'model' => 'article', 'foreign_key' => 'cid' ) );
    在Controller中使用:
    /** * @auth Mckee * @blog */ public function action_test() { //获取分类id为1的文章数量 echo ORM::factory('category', 1)->articles->count_all(); echo ORM::factory('article', 4)->category->name; }
    更多详细内容请参考:
    英文手册:http://kohanaframework.org/3.3/guide/orm/relationships
    中文手册: http://kofans.org/3.2/guide/orm/relationships
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    在我站开通SVIP可同时获得17个站点VIP资源 立即登录 立即注册
    快速回复 返回顶部 返回列表