首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在laravel 5.4中以一种形式添加具有多个表的数据多对多关系

在 Laravel 5.4 中,可以通过使用中间表来实现具有多个表的数据多对多关系。以下是一种形式的实现步骤:

  1. 创建中间表:首先,需要创建一个中间表来存储多对多关系的数据。可以使用 Laravel 的迁移工具来创建中间表。例如,可以运行以下命令来生成一个名为 table1_table2 的中间表:
代码语言:bash
复制

php artisan make:migration create_table1_table2_table --create=table1_table2

代码语言:txt
复制

运行命令后,会生成一个迁移文件,可以在 database/migrations 目录下找到。在迁移文件中,可以定义中间表的结构,例如:

代码语言:php
复制

public function up()

{

代码语言:txt
复制
   Schema::create('table1_table2', function (Blueprint $table) {
代码语言:txt
复制
       $table->unsignedBigInteger('table1_id');
代码语言:txt
复制
       $table->unsignedBigInteger('table2_id');
代码语言:txt
复制
       // 可以添加其他字段
代码语言:txt
复制
       $table->timestamps();
代码语言:txt
复制
       $table->foreign('table1_id')->references('id')->on('table1')->onDelete('cascade');
代码语言:txt
复制
       $table->foreign('table2_id')->references('id')->on('table2')->onDelete('cascade');
代码语言:txt
复制
   });

}

代码语言:txt
复制

运行迁移命令来创建中间表:

代码语言:bash
复制

php artisan migrate

代码语言:txt
复制
  1. 定义模型关系:接下来,需要在相关的模型中定义多对多关系。假设有 Table1Table2 两个模型,它们之间存在多对多关系。可以在模型中使用 belongsToMany 方法来定义关系。例如,在 Table1 模型中可以添加以下代码:
代码语言:php
复制

public function table2()

{

代码语言:txt
复制
   return $this->belongsToMany(Table2::class, 'table1_table2', 'table1_id', 'table2_id');

}

代码语言:txt
复制

Table2 模型中也添加类似的代码:

代码语言:php
复制

public function table1()

{

代码语言:txt
复制
   return $this->belongsToMany(Table1::class, 'table1_table2', 'table2_id', 'table1_id');

}

代码语言:txt
复制
  1. 使用关系:现在可以使用定义的关系来添加、查询和删除多对多关系的数据。以下是一些示例代码:
  • 添加关系:
代码语言:txt
复制
 ```php
代码语言:txt
复制
 $table1 = Table1::find(1);
代码语言:txt
复制
 $table2 = Table2::find(2);
代码语言:txt
复制
 $table1->table2()->attach($table2->id);
代码语言:txt
复制
 ```
  • 查询关系:
代码语言:txt
复制
 ```php
代码语言:txt
复制
 $table1 = Table1::find(1);
代码语言:txt
复制
 $table2s = $table1->table2;
代码语言:txt
复制
 ```
  • 删除关系:
代码语言:txt
复制
 ```php
代码语言:txt
复制
 $table1 = Table1::find(1);
代码语言:txt
复制
 $table2 = Table2::find(2);
代码语言:txt
复制
 $table1->table2()->detach($table2->id);
代码语言:txt
复制
 ```

这样,就可以在 Laravel 5.4 中以一种形式添加具有多个表的数据多对多关系了。

请注意,以上答案仅针对 Laravel 5.4 版本,不同版本的 Laravel 可能会有一些差异。另外,关于 Laravel 的更多信息和相关产品,可以参考腾讯云的 Laravel 托管服务 云托管 Laravel

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Laravel学习记录--Model

Model关联 一一 一 渴求式加载 远层一 多态关联 多多态关联 一一 1:1最基本关联关系 ,如一个User模型关联一个Phone模型,为了定义此关联,我们需User模型定义一个...渴求式加载多个关联关系 有时候你需要在单个操作中渴求式加载多个不同关联关系,要实现这一功能,只需添加参数到with方法即可 ,逗号分割 如,查询文章作者即所在栏目 嵌套渴求式加载 要使用嵌套渴求式加载关联关系...学习了一一多态关联,一多多态关联相对简单,实际上原理跟一一多态差不多,只是这里变成了一而已 下面举例说明,评论来说,文章跟评论关系是一,可能我们系统里面 还会针对某个模块设置评论窗口...显然不现实而且还是关系,到时候处理起来也很复杂,或者中间表里面添加媒体id字段,每个媒体id字段与标签建立连接?...附加/移除 一个学生可以选修门选修课,同时一门选修课又可以被多个学生选修,学生与选修课之间是关系,那如果我要给某个学生在增加一门选修课怎么办?

13.1K20

3分钟短文:说说Laravel模型中还算常用2个“关系

引言 上一章我们介绍了比较简单laravel模型关联关系一,介绍了关联操作方法。...模型Profile中添加对应到User模型关系: class Profile extends Model { public function user() { return...一关系 还有一个常见关联关系是一。比如一个用户有多个手机号,一种状态包含很多个事件,一个商品有多个标签等等等等, 这都是一常见用法。...我们使用State模型状态有多个Event事件这个场景,演示一下一关系声明,以及应用。...我们说关联关系需要外键,所以需要手动events内追加一个字段 state_id,用于指向刚才创建statesid字段。

2K31

Laravel5.1 框架模型远层一关系实例分析

本文实例讲述了Laravel5.1 框架模型远层一关系。...分享给大家供大家参考,具体如下: 远层一我们可以通过一个例子来充分了解它: 每一篇文章都肯定有并且只有一个发布者 发布者可以有篇文章,这是一个一关系。...一个发布者可以来自于一个国家 但是一个国家可以有多个发布者,这又是一个一关系,那么 这其中存在一个远层多就是”国家和文章关系”。国家可以通过发布者远层关联到文章。...相关内容感兴趣读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总...》 希望本文所述大家基于Laravel框架PHP程序设计有所帮助。

1.4K20

PHP-web框架Laravel-Eloquent ORM(三)

四、查询构建器Laravel框架中Eloquent ORM提供了方便查询构建器,用于构建复杂查询语句。下面是一些常用查询构建器方法。...总结通过上述文档和示例,我们可以看出Laravel框架中Eloquent ORM提供了便捷对象关系映射功能,可以大大简化开发者数据库操作。...它支持多种关联关系,包括一一、一多等,并且提供了方便查询构建器,用于构建复杂查询语句。...使用Eloquent ORM进行开发时,需要注意以下几点:模型类名默认对应名是模型类名复数形式,如User模型对应名是users,如果需要指定名可以通过定义$table属性来实现。...关联关系定义需要在对应模型类中定义,例如一一关联需要在hasOne和belongsTo方法中定义,一多关联需要在hasMany和belongsTo方法中定义,多关联需要在belongsToMany

1.5K41

Laravel Eloquent 模型关联关系(下)

Eloquent 模型上进行关联查询主要分为两种方式,一种是懒惰式加载(动态属性),一种是渴求式加载(通过with方法)。...另外,如果访问是模型实例上 author() 方法时,返回不是用户实例了,而是一个关联关系实例,该实例注入了查询构建器,所以你可以在其基础上通过方法链方式构建查询构建器进行更加复杂查询,我们一个一查询为例...多关联绑定与解除 插入多关联记录时候,可以通过上面一多关联记录插入方式。...: 结语 好了,关于关联关系我们就介绍到这里,我们分了三篇篇幅来介绍 Eloquent 模型管理关系,回顾一下,主要包含以下内容: 七种关联关系定义:一一、一、远层一、一多态关联...、一多态关联、多态关联; 以上关联关系查询,主要包含两种方式:懒惰式加载和渴求式加载; 基于关联查询构架复杂查询查询结果进行过滤; 关联模型更新、插入和删除操作。

19.5K30

Laravel源码分析之模型关联

使用模型关联给应用开发带来收益我认为有以下几点 主体数据和关联数据之间关系代码表现上更明显易懂让人一眼就能明白数据关系。...说了这么多下面我们就通过实际示例出发深入到底层看看模型关联是如何解决数据关联匹配和加载关联数据开发中我们经常遇到关联大致有三种:一一,一,其中一一是一种特殊多关联。... 多关联不同于一一和一多关联它需要一张中间来记录两端数据关联关系,官方文档里用户角色为例子阐述了多关联使用方法,我们也这个例子来看一下底层是怎么来定义多关联。...、关联模型、父模型中间外键名、关联模型中间外键名、父模型主键、关联模型主键、关联关系名称。...与此同时给关联关系设置了join和where约束,User类里多关联举例, performJoin方法为其添加join约束如下: $query->join('role_user', 'roles.id

9.5K10

具有嵌套关系可重用API资源——Laravel5.5

· 修改 .env 文件,使用 SQLite 数据库,并删除其他数据库相关变量。· 添加或修改 DB_CONNECTION=sqlite 来指定 Laravel 使用 SQLite 作为数据库连接。...也就是 app 目录下 User.php 文件中,你会定义用户和posts之间关联关系,比如一关系(一个用户有多个posts)或其他关系。· 避免批量赋值app/Post.php<?...这是开发或测试阶段常用操作,可以使用 Laravel Seeder 来填充数据,确保数据库中有一些初始数据可用于开发和测试。 3....能够资源类中进行关系转换,但是有条件:如果数据是可用(已经预加载),就可以进行转换;如果数据尚未加载,可以选择忽略这个转换。...参考链接:First impressions on Laravel API Resources | HackerNoon具有嵌套关系可重用 API 资源 — Laravel 5.5 |由 Marco

10610

分享8个Laravel模型时间戳使用技巧小结

默认情况下,Laravel Eloquent 模型默认数据有 created_at 和 updated_at 两个字段。当然,我们可以做很多自定义配置,实现很多有趣功能。下面举例说明。 1....Laravel 自动填充 created_at / updated_at 时候,无法找到这两个字段。...其他属性和方法 } 2. 修改时间戳默认列表 假如当前使用是非 Laravel 类型数据库,也就是你时间戳列命名方式与此不同该怎么办?...:带时间戳中间 当在关联中,时间戳不会自动填充,例如 用户 users 和 角色 roles 中间 role_user。...并且 Laravel 不会尝试自动填充 created_at/updated_at 但是如果你想自动保存时间戳,您需要在迁移文件中添加 created_at/updated_at,然后模型关联中加上

3.7K31

3分钟短文 | Laravel获取关联指定列3个方法

引言 在数据设计时,不同功能进行切分,分割为不同进行存储。在业务逻辑中,再将需要连接数据进行整合输出。 ?...今天我们说一说,Laravel中,如何关联模型,以及制定返回列,精简返回数据。 学习时间 假如有两个模型 User 和 Post,一个用户会发布多个post,也就是一关联关系。...User模型中,指定此关系: public function post(){ return $this->hasmany('Post'); } 反过来,Post模型中,必然有一个发布者,是一映射...with语句 模型with语句用于调用模型内声明关联关系,其实它接收一个数组,可以查询时关联多张,同时支持一个闭包,用于关联查询语句进行裁切。...第三种则是第一种变体,但是版本有要求。 Happy coding :-) 我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

2K20

深入理解 Laravel Eloquent(三)——模型间关系(关联)

关系 顾名思义,这描述是两个模型之间一关系。这种关系是不需要中间。...pay: id ... ... user_id User 和 Pay 具有关系,换句话说就是一个 User 可以有多个 Pay,这样的话,只 Pay 中存在一个 `user_id` 字段即可。...关系和之前关系完全不一样,因为关系可能出现很多冗余数据,用之前自带存不下了。...我们定义两个模型:Article 和 Tag,分别表示文章和标签,他们是关系结构应该是这样: article: id ... ... tag: id ... ......重要技巧:关系预载入 你也许已经发现了,关系中,如果我们需要一次性查询出10个 User 并带上对应 Account 的话,那么就需要给数据库打 1 + 10 条 SQL,这样性能是很差

2.6K30

为什么 Laravel 这么优秀?

接下来我们将尝试构建一个简易课程系统,在这个系统中有教师(Teacher),学生(Student)和课程(Course),它们之间覆盖了简单一、一多等关系,这在日常开发中也很常见。...因为我们已经完成了数据中字段定义、关系、以及最重要一步:如何将数据数据之间关系写入数据库中,下面简单来介绍下在 Laravel 是如何完成。...Model Factory 规则,我们就能轻松开发阶段模拟出一个关系完整数据。...to use pest 家务:切换到使用害虫 add testing for create course endpoint 为创建课程终点添加测试 我们知道进行数据操作前,都需要先对数据进行校验。...Laravel 默认会注册 20 多个 Service Provider,每个 Service Provider 都为 Laravel 提供了一种能力:如 Cookie/Session/DB/Filesystem

14010

30分钟用Laravel实现一个博客

细心你可能发现了,我们数据和模型名字是有区别的:数据为“小写复数形式”,而模型名为“大写单数形式”。创建模型都存在于 /app/ 下。...如果需要显示数据,则需要找到框架内指定位置视图,它完成渲染。 第三阶段_2:资源路由、资源控制器中完成对博客增删改查。...我们其实需要设置很多路由,来对应生成 BlogController 下各种方法,Laravel已经帮我们想到了所以它给我们提供了这样一种方法配置路由,编辑 /routes/web.php ,最后面添加这么一句...=> Blog 1:n Comment “一篇博客有多个评论” 我们来绑定他们关系 app\Blog.php // 绑定1:n关系 public function comments() { return...然后通过文章->评论+s;方法直接获取了属于某篇文章所有评论。 我们学会了创建请求Request,并且内部配置验证规则,控制器层中通过依赖注入形式验证数据

7.2K00

Laravel系列4.3】模型Eloquent ORM使用(一)

ORM 全称是 Obejct Relational Mapping ,翻译过来就是 对象关系映射 ,再说得直白一点,就是用 面向对象 里对象来 映射 数据库中数据。...我们关系数据库中,一行数据就可以看成是一个对象,整个就可以看成是这个对象列表。这就是非常简单地针对 ORM 理解。 Java 中 Hibernate 就是早期非常经典 ORM 框架。...这样看貌似没问题呀,可是为什么报错是 m_tests 不存在呢?这就牵涉到上面 Active Record 概念了, AR 中,一个类对应是一张,而一张是由多行数据组成。...这样做原因也正是为了保持数据一致性和完整性。 当然, Laravel 中,可以不在数据库层面进行严格设置,就可以框架代码中实现主外键关联。...当然,这只是最简单一种关联,Laravel 框架中还可以实现非常复杂关联,包括一一,关联,这些内容还是大家自己研究怎么使用吧,毕竟我们文章主旨还是在于搞清楚它们是怎么运行

8.8K20

Laravel 7发行说明

举个例子,下面我们将内置 json 类型转换自定义类型转换形式重新实现一遍: <?...$post; }); 隐式绑定约束 有时,当在路由中隐式绑定多个 Eloquent 模型时,可能希望第二个 Eloquent 模型进行约束,使其必须是第一个 Eloquent 模型子类。...邮件驱动程序 邮件驱动程序支持由 Taylor Otwell 贡献。 Laravel 7 允许为单个应用配置多个邮件驱动。...大型应用程序(例如,具有800条或更多路由应用程序)上,这些改进可以使简单「Hello World」基准测试每秒请求速度 提高2倍 ,而无需更改应用程序。...有时候需要在查询执行过程中特定属性进行类型转换,例如需要从数据中获取数据时候。

9K20

Php Laravel框架 多表关系处理 之 Eloquent一关系处理

Php Laravel框架 多表关系处理 之 Eloquent一关系处理 本博文主要介绍 Laravel 框架中 Eloquent 对一关系处理以及 Laravel Administrator...Laravel 提供了四种类型关系: –一一 –一 – 多态关系 一个一关系样例是一篇博客文章有很多评论或者一个课程有的多次分数信息等。...)、学生信息(StuInfo)有主外键关系 * 而且是一关系 */ public function StuInfo(){...> 通过以上步骤处理。之间关系已确立, 以下将介绍Laravel Administrato 后台中实现 下拉列表查询、绑定等应用 <?...演示样例中多次使用到 “学生姓名”、“课程名”,尽管他们存储不同中,但因为我们之前 Model中已建立了它们之间关系,因此我们能够自由搭配组合 效果图例如以下: 10个Laravel4

2.1K40

浅谈laravel5.5 belongsToMany自身正确用法

场景 用户之间相互关注,记录这种关系是followers(follower_id 发起关注的人 followed_id被关注的人) 现在关系就不再是传统三张关系了, 这种情况 关系应该怎么声明呢...分析 laravel或者其他框架关系 一般都是由Model1 Model2 Model1_Model2(声明两者关系)来组成, 但是上面的场景 却是只有两张,这时候就要研究下官方文档了...; 当然是支持 参考资料 https://laravel.com/docs/5.6/eloquent-relationships#many-to-many In addition to customizing...达到个性化需求, 第一个参数是 第二个Model 第二个参数是 关系名 第三个参数是 第一个Model关系外键ID 第四个参数是 第二个Model关系外键ID 解决...关系名是 ‘followers’ /** * 关注当前用户 * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany

1.2K31
领券