Laravel5.1 框架模型多态关联用法实例分析

 更新时间:2020年01月09日 10:40:04   转载 作者:Sky_sunkang  
这篇文章主要介绍了Laravel5.1 框架模型多态关联用法,结合实例形式分析了laravel5.1框架模型多态关联具体实现、使用方法与操作注意事项,需要的朋友可以参考下

本文实例讲述了Laravel5.1 框架模型多态关联用法。分享给大家供大家参考,具体如下:

什么是多态关联? 一个例子你就明白了:好比如说评论 它可以属于视频类 也可以属于文章类,当有个需求是 从评论表中取到视频类的数据,这就需要用到多态关联了。

简单的一句话总结:一张表对应两张表。

1 实现多态关联

1.1 文章表的结构

  public function up()
  {
    Schema::create('articles', function (Blueprint $table) {
      $table->increments('id');
      $table->string('title');
      $table->text('body');$table->timestamps();
    });
  }

1.2 视频表结构

  public function up()
  {
    Schema::create('videos', function (Blueprint $table) {
      $table->increments('id');
      $table->string('title');
      $table->text('description');
      $table->timestamps();
    });
  }

1.3 评论表结构

  public function up()
  {
    Schema::create('comments', function (Blueprint $table) {
      $table->increments('id');
      $table->text('content');
      $table->integer('item_id');
      $table->string('item_type');
      $table->timestamps();
    });
  }

↑ 这里需要指定 item_id 和 item_type 单一介绍一下 item_type 它主要是区别关联于那张表的 我们这里它只有两个值:App\Article 或 App\Video。

1.4 编写多态关联

Article 和 Video:

  public function comments()
  {
    /**
     * 第二个参数:如果你的前缀是item_ 那么就写item 如果是别的就写别的。
     * 第三个参数:item_type
     * 第四个参数:item_id
     * 第五个参数:关联到那个表的键
     * (以上除了第二个参数都可以省略)
     */
    return $this->morphMany(Comment::class, 'item', 'item_type', 'item_id', 'id');
  }

Comment:

  public function video()
  {
    /**
     * 三个参数都可以省略 不过K建议你还是写全
     */
    return $this->morphTo('item', 'item_type', 'item_id');
  }

使用:

Route::get('/', function () {
  $video = App\Video::find(8);
  foreach ($video->comments as $comment) {
    echo $comment->id . ": " . $comment->item_type;
  }
});

更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

相关文章

  • laravel 模型查询按照whereIn排序的示例

    laravel 模型查询按照whereIn排序的示例

    今天小编就为大家分享一篇laravel 模型查询按照whereIn排序的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • 如何使用Strace调试工具

    如何使用Strace调试工具

    本篇文章是对如何使用Strace调试工具进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • CentOS下与Apache连接的PHP多版本共存方案实现详解

    CentOS下与Apache连接的PHP多版本共存方案实现详解

    这篇文章主要介绍了CentOS下与Apache连接的PHP多版本共存方案实现,针对mod_fcgi模块的配置作了一些说明,需要的朋友可以参考下
    2015-12-12
  • php使用正则表达式获取字符串中的URL

    php使用正则表达式获取字符串中的URL

    客户端传过来一段字符串,需要从字符串中匹配出所有的url,php该如何实现呢?本文章向大家介绍php如何获取字符串中的URL(网址链接),主要使用到php正则表达式函数preg_match_all,具体实现方法请看下文
    2016-12-12
  • PHP上传文件参考配置大文件上传

    PHP上传文件参考配置大文件上传

    本文给大家介绍php上传文件参考配置大文件上传的相关知识,涉及到php上传文件配置的相关知识,对此感兴趣的朋友一起学习吧
    2015-12-12
  • Laravel利用gulp如何构建前端资源详解

    Laravel利用gulp如何构建前端资源详解

    Gulp 是一个自动化工具,前端开发者可以使用它来处理常见任务,下面这篇文章主要给大家介绍了关于Laravel利用gulp如何构建前端资源的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧
    2018-06-06
  • PHP环境搭建(php+Apache+mysql)

    PHP环境搭建(php+Apache+mysql)

    这篇文章主要为大家详细介绍了PHP环境搭建,包括php、Apache、mysql环境安装,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Yii2语言国际化自动配置详解

    Yii2语言国际化自动配置详解

    这篇文章主要介绍了Yii2语言国际化自动配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • php使用mkdir创建多级目录入门例子

    php使用mkdir创建多级目录入门例子

    这篇文章主要介绍了php使用mkdir创建多级目录入门例子,需要的朋友可以参考下
    2014-05-05
  • CI框架入门示例之数据库取数据完整实现方法

    CI框架入门示例之数据库取数据完整实现方法

    这篇文章主要介绍了CI框架入门示例的数据库取数据完整实现方法,包含了配置、建表与实现MVC的完整过程,需要的朋友可以参考下
    2014-11-11

最新评论