美文网首页
Laravel-多态关联

Laravel-多态关联

作者: 刘斤欠 | 来源:发表于2018-04-01 14:41 被阅读0次

多态关联应用场景是当多个表同时有一个字段需求时设定的,比如:

video 视频表 :视频文件,视频评论

essay 文章表:文章内容,文章评论

这俩个表都有评论这个字段,为了更好的查数据,多态关联可以更好的处理数据

数据表结构#

多态关联允许一个模型在单个关联上属于多个其他模型。例如,想象一下使用您应用的用户可以「评论」文章和视频。使用多态关联,您可以用一个 comments 表同时满足这两个使用场景。让我们来看看构建这种关联所需的数据表结构:

posts    id-integer    title-string    body-textvideos    id-integer    title-string    url-stringcomments    id-integer    body-text    commentable_id-integer    commentable_type-string

comments 表中有两个需要注意的重要字段 commentable_id 和 commentable_type。commentable_id 用来保存文章或者视频的 ID 值,而 commentable_type 用来保存所属模型的类名。commentable_type 是在我们访问 commentable 关联时, 让 ORM 确定所属的模型是哪个「类型」。

模型结构#

接下来,我们来看看创建这种关联所需的模型定义:

    * 获得拥有此评论的模型。

    */publicfunctioncommentable(){return$this->morphTo();}}classPostextendsModel{/**

    * 获得此文章的所有评论。

    */publicfunctioncomments(){return$this->morphMany('App\Comment','commentable');}}classVideoextendsModel{/**

    * 获得此视频的所有评论。

    */publicfunctioncomments(){return$this->morphMany('App\Comment','commentable');}}

获取多态关联#

一旦您的数据库表准备好、模型定义完成后,就可以通过模型来访问关联了。例如,我们只要简单地使用 comments动态属性,就可以获得某篇文章下的所有评论:

$post=App\Post::find(1);foreach($post->commentsas$comment){ //}

插入多态关联数据

$post=App\Post::find(1)->create(['comment'=>'要插入的数据']);

相关文章

  • Laravel-多态关联

    多态关联应用场景是当多个表同时有一个字段需求时设定的,比如: video 视频表 :视频文件,视频评论 essay...

  • ActiveRecord关联关系之多态(polymorphic)

    在多态关联中同一个关联可以属于多个模型 在belong_to 中指定使用多态,可以理解为创建了一个接口,供别的模型...

  • Rails 的多态关联

    首先很久没有写过 markdown, 真是不进则退,还好 google 了下,要感谢这篇文章 献给写作者的 Mar...

  • 1.2.22_C++ 多态

    多态按字面的意思就是多种形态。 当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。 C++ 多态意味...

  • c++程序员面试宝典之多态与虚函数

    二十.多态与虚函数 多态:多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到...

  • C++----多态

    多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。 C++ 多态意味着...

  • 【Boolan】C++ 多态

    多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。 C++ 多态意味着...

  • 多态关联和反向引用

    简书 賈小強转载请注明原创出处,谢谢! 在面向对象中通过继承,子类具有了父类的东西,可以通过父类型的引用指向子类型...

  • Active Record模型间的关联(多态关联)

    关联的类型有 has_one has_many belongs_to has_one :through has_m...

  • Laravel-目录结构

    Laravel-目录结构[https://www.cnblogs.com/superzwb/p/11855803....

网友评论

      本文标题:Laravel-多态关联

      本文链接:https://www.haomeiwen.com/subject/hcaocftx.html