Kohana的ORM多对多关系的用法总结

8 篇文章 0 订阅

之前一直没有好的使用多对多例子,所以也一直没有总结,现在有一个好的例子,那就文章的标签与文章的关系,一篇文章可以有多个标签,一个标签也可以存在于多篇文章中,这是一个比较好的运用多对多的例子,

首先是数据库的设计,多对多需要一个中间数据库表来将两个表来联系起来。数据库设计如下:

pre_articles   //文章表

       id

      ……


pre_articles_tags  // 文章与tag的表

      id

     article_id

     tag_id


pre_tags   //标签表

     id

     ……

model类相关代码如下:

     Model_article

    

       /**
	 * 关联标签
	 */
	protected $_has_many = array(
		'tags' => array(
			'through' => 'articles_tags',
		),
	);
      Model_tag
	/**
	 * 关联文章
	 * @var unknown_type
	 */
	protected $_has_many = array(
		'articles' => array(
			'through' => 'articles_tags',
		),
	);

运用代码:

      获取一篇文章的所有标签

      $article_model->tags->find_all();

      //删除文章的一个标签

      $article_model->remove('tags', $tag_model);

      添加一个文章的标签

      // 直接添加对象

     $article_model->add('tags', $tag_model);

     // 直接指定要添加的对象的主键

     $article_model->add('tags', 1);

     标签的操作和上面的是一样的

     上面的代码中 $article_model 和 $tag_model 指的都是一个model实例。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值