ASCII码 ASCII码

图文详解laravel多对多关联模型

发布于:2022-03-05 10:25:28  栏目:技术文档

多对多就相当于一个专题Topic有多个文章,但是这多个文章又属于多个专题,下面这篇文章主要给大家介绍了关于laravel多对多关联模型的相关资料,需要的朋友可以参考下

关联模型(多对多)

多对多关系(抽象)

例:一篇文章可能有多个关键词,一个关键词可能被多个文章使用。 关键词表:

字段id 主键字段keyword 关键词文章与关键词的关系表:字段id 主键


字段article_id 文章id字段key_id 关键词id创建迁移文件:php artisan make:migration create_keyword_tablephp artisan make:migration create_relation_table

编写迁移文件的代码:执行迁移php artisan migrate创建填充器:php artisan make:seeder KeywordAndRelationTableSeeder编写填充器数据:`<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;use DB;

class KeywordAndRelationTableSeeder extends Seeder{ /**

  1. * Run the database seeds.
  2. *
  3. * @return void
  4. */
  5. public function run()
  6. {
  7. //关键词数据
  8. DB::table('keyword') -> insert([
  9. ['keyword' => '搞笑'],
  10. ['keyword' => '文艺'],
  11. ['keyword' => '正片'],
  12. ['keyword' => '惊悚'],
  13. ['keyword' => '娱乐'],
  14. ['keyword' => '武术'],
  15. ]);
  16. //关系表
  17. DB::table('relation') -> insert([
  18. [
  19. 'article_id' => rand(1,3),
  20. 'keyword_id' => rand(1,6)
  21. ],
  22. [
  23. 'article_id' => rand(1,3),
  24. 'keyword_id' => rand(1,6)
  25. ],
  26. [
  27. 'article_id' => rand(1,3),
  28. 'keyword_id' => rand(1,6)
  29. ],
  30. [
  31. 'article_id' => rand(1,3),
  32. 'keyword_id' => rand(1,6)
  33. ],
  34. ]);
  35. }

}`

执行填充器: php artisan db:seed —class=KeywordAndRelationTableSeeder

案例:查询出每个文章(主)下全部的关键词(从) 语法:

1return $this -> belongsToMany(被关联模型的元素空间路径, 多对多模型的关系表名, 关系表中当前模型中的关系键,关系表中被关联模型的关系键)

上述语法提及到的关系键是指在关系表中的字段名。 创建关键词模型: php artisan make:model Keyword

创建案例路由:

创建案例控制方法:

效果:

相关推荐
阅读 +