laravel使用 面向对象的方式绑定多对多的关系
创建model文件,并且一起创建migration文件:
php artisan make:model Habit -m
创建多对多的中间表的方法:
php artisan make:migration create_habit_user_table --create=habit_user
设计habit_user:
$table->unsignedInteger('user_id');
$table->unsignedInteger('habit_id');
模型中定义多对多:
user模型:
public function habits(){
return $table->belongsToMany(Habit::class);
}
/*
belongsToMany参数说明:
第一个参数是 第二个Model
第二个参数是 关系表名
第三个参数是 第一个Model在关系表中的外键ID
第四个参数是 第二个Model在关系表中的外键ID
*/
Habit模型:
public function users(){
return $this->belongsToMany(User::class);
}
实现多对多关系:
第一种方法:attach(不会删除之前的数据,只会把新添加的数据加上去)
//通过面向对象的方式绑定文章和标签:
$label1=\App\Label::create(['name'=>'Python']);
$label2=\App\Label::create(['name'=>'Java']);
$article=\App\Article::first();
$article->labels()->attach([
$label1->id,
$label2->id
]);
dd($article->labels); 第二种方法:sync(使用sync会和数据库同步,只会保留我们填写的id项,其他的项都会删除掉)
$label1=\App\Label::create(['name'=>'Python']);
$label2=\App\Label::create(['name'=>'Java']);
$article=\App\Article::first();
$article->labels()->sync([
$label1->id,
$label2->id
]);
dd($article->labels); 解绑的方法使用detach,只需要传入需要解绑的数据id就可以了
laravel使用 面向对象的方式绑定多对多的关系的更多相关文章
- Laravel修炼:服务容器绑定与解析
前言 老实说,第一次老大让我看laravel框架手册的那天早上,我是很绝望的,因为真的没接触过,对我这种渣渣来说,laravel的入门门槛确实有点高了,但还是得硬着头皮看下去(虽然到现在我还有很多 ...
- php 面向对象的方式访问数据库
<body> <?php //面向对象的方式访问数据库 //造对象 $db = new MySQLi("localhost","root",& ...
- PHP中将对数据库的操作,封装成一个工具类以及学会使用面向对象的方式进行编程
<?php class SqlTool { //属性 private $conn; private $host="localhost"; private $user=&quo ...
- AES和RSA的加密过程通过面向对象的方式写成一个类,封装起来
# 面向对象的方式 实现加密方法 from Crypto.Cipher import AES from Crypto import Random from binascii import b2a_he ...
- 13.翻译系列:Code-First方式配置多对多关系【EF 6 Code-First系列】
原文链接:https://www.entityframeworktutorial.net/code-first/configure-many-to-many-relationship-in-code- ...
- Lua和C++交互 学习记录之九:在Lua中以面向对象的方式使用C++注册的类
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 在 ...
- 使用FindAncestor查找方式绑定且不需要使用datacontext
原文:使用FindAncestor查找方式绑定且不需要使用datacontext <UserControl x:Class="QuJiao.AnimationVideoPlayer&q ...
- 用面向对象的方式操作 JSON 甚至还能做四则运算 JSON 库
前言 在之前实现的 JSON 解析器中当时只实现了将一个 JSON 字符串转换为一个 JSONObject,并没有将其映射为一个具体的 struct:如果想要获取值就需要先做断言将其转换为 map 或 ...
- Laravel 5.1 文档攻略 —— Eloquent:模型关系
简介 其实大家都知道,数据表之间都是可以关联的,前面讲过了,Eloquent ORM是数据模型操作代替表操作,那么表的关联查询,在Eloquent这里也就是模型间的关联查询,这就是本章的主要内容: E ...
随机推荐
- 设置webstorm自动删除行尾分号
- POI兴趣点搜索 - 地理信息系统(6)
(2017-08-13 银河统计) POI(Point of Interest),中文可以翻译为"兴趣点",兴趣点(POI)是地理信息系统中的一个术语,泛指一切可以抽象为点的地理对 ...
- IDEA启动项目内存溢出
一.java.lang.OutOfMemoryError: Java heap space 1.在tomcat设置界面 VM options添加参数 -server -XX:PermSize=512 ...
- BottomNavigationBarItem fixed
BottomNavigationBar( type: BottomNavigationBarType.fixed, onTap: (value){ if more then 3 items,, use ...
- idea maven指定编译参数
"Settings" > "Build, Execution, Deployment" > "Compiler" > &q ...
- 原生js计时器
闲来无事,写一个简单的计时器 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- 【做题】CSA49F - Card Collecting Game——思维&dp
原文链接 https://www.cnblogs.com/cly-none/p/CSA49F.html 题意:Alice和Bob在玩游戏.有\(n\)种卡牌,每种卡牌有\(b_i\)张,保证\(\su ...
- Bytom储蓄分红合约解析
储蓄分红合约简介 储蓄分红合约指的是项目方发起了一个锁仓计划(即储蓄合约和取现合约),用户可以在准备期自由选择锁仓金额参与该计划,等到锁仓到期之后还可以自动获取锁仓的利润.用户可以在准备期内(dueB ...
- Spark机器学习基础二
无监督学习 0.K-means from __future__ import print_function from pyspark.ml.clustering import KMeans #from ...
- Qt setstylesheet指定窗口
#窗口名称{ ...} 在窗口名称前加#号可以指定某个窗口设置stylesheet而不影响子窗口.子控件,可以用于设置边框,不影响子控件产生一样的边框.