laravel实现多对多的分析
在实际开发中多对多的开发还是比较常见的
1.1首先由migrate来创建表(文章表)
1.2同理创建标签表
1.3这是 我会的到如下结果:
2.1在数据迁移表contents中添加几个字段
public function up()
{
Schema::create('contents', function (Blueprint $table) {
$table->increments('id'); $table->string('title');
$table->text('body'); $table->timestamps();
});
}
2.2在数据迁移表tag中添加如下字段:
public function up()
{
Schema::create('tags', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
}); Schema::create('content_tag', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->integer('content_id')->unsigned()->index();
$table->integer('tag_id')->unsigned()->index(); //设置外键
$table->foreign('content_id')->references('id')->on('contents')->onDelete('cascade');
$table->foreign('tag_id')->references('id')->on('tags')->onDelete('cascade');
$table->timestamps();
});
}
3.3这时运行如下的artisan命令
php artisan migrate
在数据库表中可以看到如下表
这时就在两个模型中各添加一个方法
//在Content模型中 添加 public function tags()
{
return $this->belongsToMany(Tag::class);
} //在Tag模型中 添加
public function contents()
{
return $this->belongsToMany(Content::class);
}
现在进入测试阶段代码如下
//向各表中添加20条数据 factory(Content::class,20)->create(); factory(Tag::class,20)->create();
结果如下:
最后几步配置路由如下
Route::get('/', function () {
$content = \App\Content::find(3);
//在content_tag表中添加tag标签为3和content表中id为3的数据
$content_tag = $content->tags()->attach(3); //进行删除数据
// $content_tag = $content->tags()->detach(3);
dd($content_tag);
return view('welcome');
});
紧接着启动服务器
php artisan serve
测试结果:在表中的数据
删除之后的结果
laravel实现多对多的分析的更多相关文章
- laravel中间件的创建思路分析
网上有很多解析laravel中间件的实现原理,但是不知道有没有读者在读的时候不明白,作者是怎么想到要用array_reduce函数的? 本文从自己的角度出发,模拟了如果我是作者,我是怎么实现这个中间件 ...
- CVE-2021-3129:Laravel远程代码漏洞复现分析
摘要:本文主要为大家带来CVE-2021-3129漏洞复现分析,为大家在日常工作中提供帮助. 本文分享自华为云社区<CVE-2021-3129 分析>,作者:Xuuuu . CVE-202 ...
- CVE-2019-9081:laravel框架序列化RCE复现分析
这里贴上两篇大佬的分析的帖子 本人习惯把平常的一些笔记或者好的帖子记录在自己的博客当中,便于之后遇到同样的漏洞时快速打开思路 1.https://xz.aliyun.com/t/5510#toc-8 ...
- Laravel Container分析
在分析Laravel流程具体细节之前我们先来了解一下它的Container容器,容器的作用简单的说就是用来存储对象(类名称或者实例),包括提供一些生成对象实例的方法. 我们查看Illuminate\C ...
- 【PHP】用了这么久的Laravel框架,你分析过核心架构了没
Laravel最初的设计是为了面向MVC架构的,它可以满足如事件处理.用户身份验证等各种需求.另外它还有一个由管理数据库强力支持,用于管理模块化和可扩展性代码的软件包管理器. Laravel以其简洁. ...
- Laravel学习笔记之Session源码解析(下)
说明:在中篇中学习了session的CRUD增删改查操作,本篇主要学习关闭session的相关源码.实际上,在Laravel5.3中关闭session主要包括两个过程:保存当前URL到session介 ...
- [原创]Laravel 基于redis队列的解析
目录 参考链接 本文环境 为什么使用队列 Laravel 中的队列 分发任务 任务队列 Worker Last-Modified: 2019年5月10日11:44:18 参考链接 使用 Laravel ...
- Laravel 精选资源大全
原文链接 必备品 文档:Documentation API:API Reference 视频:Laracasts 新闻:Laravel News 中文文档 Laravel学院– Laravel 5. ...
- 关于Laravel框架中Guard的底层实现
1. 什么是Guard 在Laravel/Lumen框架中,用户的登录/注册的认证基本都已经封装好了,开箱即用.而登录/注册认证的核心就是: 用户的注册信息存入数据库(登记) 从数据库中读取数据和用户 ...
随机推荐
- Flex布局(转载)
网页布局(layout)是 CSS 的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂 ...
- SpringMVC上传文件大小的设置
在spring-mvc.xml(springmvc的配置文件)里: <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id ...
- yii console
Here is a step by step to show how to run command in the server with yii framework. 1. Create the we ...
- PTA 说反话-加强版(20 分)(字符串处理)
说反话-加强版(20 分) 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串.字符串由若干单词和若干空 ...
- phpmailer绑定邮箱
1.配置 <?php return array ( 'email_host' => 'smtp.aliyun.com', 'email_port' => '25', 'email_u ...
- [置顶]
STM32 输入捕获的脉冲宽度及频率计算
输入捕获模式可以用来测量脉冲宽度或者测量频率.STM32 的定时器,除了 TIM6 和 TIM7,其他定时器都有输入捕获功能.以下是对脉冲宽度及频率的计算. 1.脉冲宽度 如下图所示,采集该高电平脉冲 ...
- 卷积神经网络之ResNet网络模型学习
Deep Residual Learning for Image Recognition 微软亚洲研究院的何凯明等人 论文地址 https://arxiv.org/pdf/1512.03385v1.p ...
- SQL SERVER常用的统计用法
--查询各个状态下总数SET statistics time on Go SELECT END ) AS Q1, END ) AS Q2, END ) AS Q3, END ) AS Q4, END ...
- ansible里的item和with_items
################################## 变量命名 变量名仅能由字母.数字和下划线组成且只能以字母开头. ################################# ...
- java rest jax-rs 漫谈
rest是什么 REST是英文RepresentationalState Transfer 的缩写,有中文翻译为“具象状态传输”.REST 这个术语是由 RoyFielding 在他的博士论文< ...