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程序设计有所帮助。

相关文章

  • php生成excel列序号代码实例

    php生成excel列序号代码实例

    php生成excel列序号的方法,大家参考使用吧
    2013-12-12
  • php制作的简单验证码识别代码

    php制作的简单验证码识别代码

    近期研究一些突破验证码方面的知识,记录下来。一方面算是对这几天学习知识的总结帮助自己理解;另一方面希望对研究这方面的技术同学有所帮助;另外也希望引起网站管理者的注意,在提供验证码时多些考虑进去。由于刚刚接触这方面的知识,理解比较浅显,有错误再所难免
    2016-01-01
  • Yii框架在页面输出执行sql语句以方便调试的实现方法

    Yii框架在页面输出执行sql语句以方便调试的实现方法

    这篇文章主要介绍了Yii框架在页面输出执行sql语句以方便调试的实现方法,涉及yiidebugtb的使用,是比较实用的技巧,需要的朋友可以参考下
    2014-12-12
  • Zend Framework教程之配置文件application.ini解析

    Zend Framework教程之配置文件application.ini解析

    这篇文章主要介绍了Zend Framework教程之配置文件application.ini用法,分析了配置文件application.ini中常见的配置项含义及用法,需要的朋友可以参考下
    2016-03-03
  • smarty中英文多编码字符截取乱码问题解决方法

    smarty中英文多编码字符截取乱码问题解决方法

    这篇文章主要介绍了smarty中英文多编码字符截取乱码问题解决方法,涉及到对原有smartTruncate的修改,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • php 文件上传至OSS及删除远程阿里云OSS文件

    php 文件上传至OSS及删除远程阿里云OSS文件

    今天给大家介绍php 文件上传至OSS及删除远程阿里云OSS文件的方法,在删除文件的时候大家记住千万不要带域名,具体操作示例参考下本文
    2021-07-07
  • PHP-Java-Bridge使用笔记

    PHP-Java-Bridge使用笔记

    这是我在做平安银行开发的时候,本地使用PHP环境,平安银行接口为Java接口的时候,采用PHP-Java-Bridge的方式调用接口的笔记。因为现在网上的教程基本上都不行了,所以在这里贴出我能使用的而且目前网上最新的版本(2014-09-19),如果有错,请通过邮件联系,谢谢。
    2014-09-09
  • PHP7多线程搭建教程

    PHP7多线程搭建教程

    这篇文章主要介绍了PHP7多线程搭建教程,需要的朋友可以参考下
    2017-04-04
  • Yii模型操作之criteria查找数据库的方法

    Yii模型操作之criteria查找数据库的方法

    这篇文章主要介绍了Yii模型操作之criteria查找数据库的方法,结合实例形式分析了Yii模型中criteria的实例化与查询操作相关技巧,需要的朋友可以参考下
    2016-07-07
  • php屏蔽错误及提示的方法

    php屏蔽错误及提示的方法

    在本篇文章里小编给大家分享的是关于php屏蔽错误及提示的方法,需要的朋友们可以学习下。
    2020-05-05

最新评论