网站首页
laravel--ORM--深入操作-多对多关联模型
发布时间:2016-07-14 07:42查看次数:3581
多对多关联模型
例如:一片文章可以有多个标签 A B C D E 标签
一个标签有可能多个文章都适用,这个时间我们就需要用一张新的表存储
假定表结构这样
article id name content tilel
tag id tag_content
简单我们的存储交叉表为
article_tag id article_id tag_id
那么机构就很清晰了
模型定义: 标签表tag public function get_article(){ return $this->belongsToMany('App\Http\Model\Article', 'article_tags','tag_id','article_id'); 对应的文章model 命名空间 ,交叉数据表 ,标签ID字段 ,文章ID字段 } 调用示例: public function allToAll(){ //取标签ID为15的 所以对应文章 $data = Tag::find(15)->get_Article; } 原生SQL: select `articles`.*, `article_tags`.`tag_id` as `pivot_tag_id`, `article_tags`. `article_id` as `pivot_article_id` from `articles` inner join `article_tags` on `articles`.`id` = `article_tags`.`article_id` where `article_tags`.`tag_id` = '15' 文章表模型定义 //取文章标签? public function get_tag(){ return $this->belongsToMany('App\Http\Model\Tag','article_tags','article_id','tag_id'); 标签表命名空间 交叉表名称 当前表ID 标签表ID } 调用示例: public function allToAll(){ $data = Article::find(1)->get_tag; return view('test'); } 原生SQL: select `tags`.*, `article_tags`.`article_id` as `pivot_article_id`, `article_tags`.`tag_id` as `pivot_tag_id` from `tags` inner join `article_tags` on `tags`.`id` = `article_tags`.`tag_id` where `article_tags`.`article_id` = '1'
关键字词:多对多