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

Laravel保存子记录,但将外键设置为null

在Laravel中,保存子记录并将外键设置为null可以通过以下步骤完成:

  1. 首先,确保你已经设置了适当的关联关系。假设你有两个模型:Parent和Child,它们之间是一对多的关系,即一个Parent可以有多个Child。在Parent模型中,你需要定义一个hasMany关联方法来关联Child模型:
代码语言:php
复制
public function children()
{
    return $this->hasMany(Child::class);
}

在Child模型中,你需要定义一个belongsTo关联方法来关联Parent模型:

代码语言:php
复制
public function parent()
{
    return $this->belongsTo(Parent::class);
}
  1. 接下来,在保存子记录之前,你需要创建一个Parent实例并保存它。假设你已经创建了一个Parent实例并将其保存到数据库中:
代码语言:php
复制
$parent = new Parent;
$parent->save();
  1. 然后,你可以使用create方法在Parent模型上创建一个新的Child实例,并将其与Parent关联起来。在创建Child实例时,将外键设置为null:
代码语言:php
复制
$child = $parent->children()->create([
    'name' => 'Child Name',
    'foreign_key' => null,
]);

在上面的代码中,'name'是Child模型的一个属性,'foreign_key'是Child模型的外键属性。通过将外键设置为null,你可以将子记录与父记录关联起来,同时将外键设置为null。

  1. 最后,记得保存Child实例:
代码语言:php
复制
$child->save();

这样,你就成功地保存了子记录并将外键设置为null。

关于Laravel的更多信息和相关产品,你可以访问腾讯云的Laravel云托管服务(https://cloud.tencent.com/product/laravel-hosting)和Laravel云开发框架(https://cloud.tencent.com/product/scf-laravel)页面了解更多详情。

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

相关·内容

Laravel Eloquent 模型关联关系(下)

>orderBy('created_at', 'desc'); }]); 关联插入与更新 一对多关联记录插入 新增关联模型的时候,可以在父模型上调用相应方法直接插入记录到数据库,这样做的好处是不需要指定关联模型与父模型的关联字段值...还可以通过 saveMany 方法一次插入多条关联记录,前提是关联模型配置了批量赋值,比如我们 Comment 模型类配置白名单 $fillable 属性如下(你也可以不配置批量赋值,但是需要多次实例化并逐个设置评论模型属性值...如果是要更新新创建的模型实例所属模型(父模型)的字段,比如以 posts 表例,新增的记录想要更新 user_id 字段,可以这么实现: $user = User::findOrFail(1);...前提是 user_id 允许 null,否则会抛出异常。 空对象模型 如果字段 user_id 允许空的话,当我们访问 Post 模型上的 author 属性时,默认返回 null。...下面我们简单演示下,以 id=31 的评论记录例,对应的模型数据及所属文章模型数据如下: 现在,我们更新下对应的 Comment 模型数据并保存: $comment = Comment::findOrFail

19.6K30

Laravel源码分析之模型关联

多对多 多对多关联不同于一对一和一对多关联它需要一张中间表来记录两端数据的关联关系,官方文档里以用户角色例子阐述了多对多关联的使用方法,我们也以这个例子来看一下底层是怎么来定义多对多关联的。...'user_id', // 文章表... 'id', // 国家表本地......$this->firstKey = $firstKey;//用户表中的country_id $this->secondKey = $secondKey;//文章表中的...//组成[父模型ID => [子模型1, ...]]的字典 $dictionary = $this->buildDictionary($results); //子模型设置到父模型的...模型关联常用的一些功能的底层实现到这里梳理完了,Laravel把我们平常用的join, where in 和查询都隐藏在了底层实现中并且帮我们把相互关联的数据做好了匹配。

9.6K10
  • mysql学习总结04 — SQL数据操作

    NULL,1 IS NOT NULL 1,!...左连接和右连接其实可以互相转换,但是数据对应的位置(表顺序)会改变 连接中主表数据记录一定会保存:连接之后不会出现记录数少于主表(内连接可能) 应用 常用的数据获取方式:获取主表和对应的从表数据(关联... 12.1 概念 foreign key : 一张表(从表)中有一个字段(),保存的值指向另外一张表(主表)的主键 12.2 的操作 增加 方案1:创建表时增加(类似主键) 基本语法...创建时会自动增加一个普通索引,删除时仅删除外不删除索引,如果要删除需要手动删除 基本语法: alter table drop foreign key ; alter table...:级联模式,一起操作,主表变化,从表数据跟随变化 set null:置空模式,主表变化(删除),从表对应记录设置空,前提是从表中对应的字段允许空 添加约束模式: 基本语法: add foreign

    5.2K30

    mysql常见的建表选项和约束

    ,指定某列和几列组合的数据不能重复 primary key:主键约束,指定某列的数据不能重复,唯一 foreign key:,指定该列记录属于主表中的一条记录,参照另一条记录 check:检查,指定一个表达式...,用于检验指定数据 primary key = not null + unique 主键是用来唯一标识表中的每一行,类型一般整型或者字符串 具有主键约束的列不允许有null值,不允许有重复值 每个表最多只允许一个主键...: 具有约束的列的值不能随便给,必须满足所引用的主键的取值 一张表中可以定义多个 列默认可以给null值 父子表 所在的表叫做子表,从表 所引用的主键所在的表叫做父表,主表 constraint...emp_deptid_fk foreign_key(deptid) references dept(deptid) 的删除规则 当删除父表中的行时,如果子表中有依赖被删除的父行的行存在,那么就不允许删除...set null:当删除父表中的行时,如果子表中有依赖于被删除的父行的行存在,那么不删除,而是行的设置null 引用定义 reference_definition: REFERENCES

    14610

    SQL岗位30个面试题,SQL面试问题及答案「建议收藏」

    · ForeignKey()——在一个表中定义主键并在另一个表中定义字段的被标识。...· UniqueKey(唯一)——除了主键之外,表中还有更多,它们只标识记录唯一的区别是它们只接受一个空值但不接受重复值。...它被定义通过为查询提供条件来设置结果集的限制。他们从整个记录中过滤掉一些行。 一些SQL的字句是WHERE和HAVING。 22.什么是Aggregate Functions(聚合函数)?...假设有一个表,并且在表中有一个字段,可以在不添加值的情况下记录插入字段,然后该字段将以NULL保存。 空格是我们提供的值。 0只是一个数字。 什么是Data Warehouse(数据仓库)?...UNIQUE KEY(唯一)和PRIMARY KEY(主键)之间有什么区别? 在表中,应该只有一个主键,但在另一种情况下,唯一可以为任意数量。 主键不允许NULL值,唯一允许NULL值。

    4.4K31

    详解Mysql执行计划explain

    .png)] 查看是否生效:show variable like ‘%profil%’; [链图片转存失败,源站可能有防盗链机制,建议图片保存下来直接上传(img-sXUsu1KO-1590054590258.../resource/21284c2738a384fa363a501570429826.png)] 全部分析的类型:show PROFILE all; [链图片转存失败,源站可能有防盗链机制,建议图片保存下来直接上传....png)] [链图片转存失败,源站可能有防盗链机制,建议图片保存下来直接上传(img-wy0aSPNB-1590054590265)(https://graph.baidu.com/resource...选择解释标签,就可以查看到sql的执行计划了 [链图片转存失败,源站可能有防盗链机制,建议图片保存下来直接上传(img-AZbbSgxi-1590054590266)(https://graph.baidu.com...eq_ref:最多只会有一条匹配结果,一般是通过主键或者唯一索引来访问;在连接中,MYSQL在查询时,从前面的表中,对每一个记录的联合都从表中读取一个记录,它在查询使用了索引为主键或惟一的全部时使用

    94420

    MySQL 最经常使用的一千行

    MySQL中,能够对InnoDB引擎使用约束: 语法: foreign key (字段) references 主表名 (关联字段) [主表记录删除时的动作] [主表记录更新时的动作...在没有关联的情况下,能够设置null.前提是该列,没有not null。 能够不指定主表记录更改或更新时的动作,那么此时主表的操作被拒绝。...主表数据被更新(主键值更新),从表也被更新(键值更新)。主表记录被删除,从表相关记录也被删除。 2. set null设置null。...主表数据被更新(主键值更新),从表的设置null。主表记录被删除,从表相关记录设置null注意,要求该列,没有not null属性约束。...-- 左连接 left join 假设数据不存在,左表记录会出现,而右表null填充 -- 右连接 right join 假设数据不存在,右表记录会出现,而左表

    1.4K10

    Laravel学习记录--Model

    如: hasOne(class,foreignkey,primarykey); class:关联模型的类名 foreignkey:关联模型的,如果不指定默认在这里默认为 muser_id...) 如不指定,默认拼接规则为 表名_id,这里stu_id relatedPivotKey:另一模型在中间表的字段(当前模型类的) 如不指定,默认拼接规则与foreignPivotKey一样 这里...要建立这种多态管理,需要设置图片表结构以及用户与文章表的关联,在图片表要额外添加两个字段,1,类型字段(table_type)保存所属模型的类名。...,这条记录的uidnull,前提是uid字段允许空,如果不允许空会抛出异常 空对象模型 如果字段uid允许空,当我们访问Phone模型上的muser属性(注意这里是属性,而不是方法)时,默认返回...有时候你需要更新中间表中已经存在的记录,使用updateExistingPivot方法 该方法接受中间记录另一个的和一个关联数组进行更新 public function show(){

    13.6K20

    一千行 MySQL 详细学习笔记

    MySQL中,可以对InnoDB引擎使用约束: 语法: foreign key (字段) references 主表名 (关联字段) [主表记录删除时的动作] [主表记录更新时的动作...在没有关联的情况下,可以设置null.前提是该列,没有not null。 可以不指定主表记录更改或更新时的动作,那么此时主表的操作被拒绝。...主表数据被更新(主键值更新),从表也被更新(键值更新)。主表记录被删除,从表相关记录也被删除。 2. set null设置null。...主表数据被更新(主键值更新),从表的设置null。主表记录被删除,从表相关记录设置null注意,要求该列,没有not null属性约束。...-- 左连接 left join 如果数据不存在,左表记录会出现,而右表null填充 -- 右连接 right join 如果数据不存在,右表记录会出现,而左表

    2.6K30

    MySQL 详细学习笔记

    MySQL中,可以对InnoDB引擎使用约束: 语法: foreign key (字段) references 主表名 (关联字段) [主表记录删除时的动作] [主表记录更新时的动作...在没有关联的情况下,可以设置null.前提是该列,没有not null。 可以不指定主表记录更改或更新时的动作,那么此时主表的操作被拒绝。...主表数据被更新(主键值更新),从表也被更新(键值更新)。主表记录被删除,从表相关记录也被删除。 2. set null设置null。...主表数据被更新(主键值更新),从表的设置null。主表记录被删除,从表相关记录设置null注意,要求该列,没有not null属性约束。...-- 左连接 left join 如果数据不存在,左表记录会出现,而右表null填充 -- 右连接 right join 如果数据不存在,右表记录会出现,而左表

    1.5K50

    一千行 MySQL 详细学习笔记(值得学习与收藏)

    MySQL中,可以对InnoDB引擎使用约束: 语法: foreign key (字段) references 主表名 (关联字段) [主表记录删除时的动作] [主表记录更新时的动作...在没有关联的情况下,可以设置null.前提是该列,没有not null。 可以不指定主表记录更改或更新时的动作,那么此时主表的操作被拒绝。...主表数据被更新(主键值更新),从表也被更新(键值更新)。主表记录被删除,从表相关记录也被删除。 2. set null设置null。...主表数据被更新(主键值更新),从表的设置null。主表记录被删除,从表相关记录设置null注意,要求该列,没有not null属性约束。...-- 左连接 left join 如果数据不存在,左表记录会出现,而右表null填充 -- 右连接 right join 如果数据不存在,右表记录会出现,而左表

    2.8K20

    干货!超过500行的Mysql学习笔记

    MySQL中,可以对InnoDB引擎使用约束: 语法: foreign key (字段) references 主表名 (关联字段) [主表记录删除时的动作] [主表记录更新时的动作] 此时需要检测一个从表的需要约束为主表的已存在的值...在没有关联的情况下,可以设置null.前提是该列,没有not null。 可以不指定主表记录更改或更新时的动作,那么此时主表的操作被拒绝。...主表数据被更新(主键值更新),从表也被更新(键值更新)。主表记录被删除,从表相关记录也被删除。 2. set null设置null。主表数据被更新(主键值更新),从表的设置null。...主表记录被删除,从表相关记录设置null注意,要求该列,没有not null属性约束。 3. restrict,拒绝父表删除和更新。 注意,只被InnoDB存储引擎所支持。...-- 左连接 left join 如果数据不存在,左表记录会出现,而右表null填充 -- 右连接 right join 如果数据不存在,右表记录会出现,而左表null填充 -- 自然连接(natural

    1.3K60

    一千行 MySQL 详细学习笔记

    MySQL中,可以对InnoDB引擎使用约束: 语法: foreign key (字段) references 主表名 (关联字段) [主表记录删除时的动作] [主表记录更新时的动作...在没有关联的情况下,可以设置null.前提是该列,没有not null。 可以不指定主表记录更改或更新时的动作,那么此时主表的操作被拒绝。...主表数据被更新(主键值更新),从表也被更新(键值更新)。主表记录被删除,从表相关记录也被删除。 2. set null设置null。...主表数据被更新(主键值更新),从表的设置null。主表记录被删除,从表相关记录设置null注意,要求该列,没有not null属性约束。...-- 左连接 left join 如果数据不存在,左表记录会出现,而右表null填充 -- 右连接 right join 如果数据不存在,右表记录会出现,而左表

    2.4K20

    牛逼的 MySQL 学习笔记

    MySQL中,可以对InnoDB引擎使用约束: 语法: foreign key (字段) references 主表名 (关联字段) [主表记录删除时的动作] [主表记录更新时的动作...在没有关联的情况下,可以设置null.前提是该列,没有not null。 可以不指定主表记录更改或更新时的动作,那么此时主表的操作被拒绝。...主表数据被更新(主键值更新),从表也被更新(键值更新)。主表记录被删除,从表相关记录也被删除。 2. set null设置null。...主表数据被更新(主键值更新),从表的设置null。主表记录被删除,从表相关记录设置null注意,要求该列,没有not null属性约束。...-- 左连接 left join 如果数据不存在,左表记录会出现,而右表null填充 -- 右连接 right join 如果数据不存在,右表记录会出现,而左表

    2.1K31

    1000行 MySQL 学习笔记,不怕你不会,就怕你不学!

    MySQL中,可以对InnoDB引擎使用约束: 语法: foreign key (字段) references 主表名 (关联字段) [主表记录删除时的动作] [主表记录更新时的动作...在没有关联的情况下,可以设置null.前提是该列,没有not null。 可以不指定主表记录更改或更新时的动作,那么此时主表的操作被拒绝。...主表数据被更新(主键值更新),从表也被更新(键值更新)。主表记录被删除,从表相关记录也被删除。 2. set null设置null。...主表数据被更新(主键值更新),从表的设置null。主表记录被删除,从表相关记录设置null注意,要求该列,没有not null属性约束。...-- 左连接 left join 如果数据不存在,左表记录会出现,而右表null填充 -- 右连接 right join 如果数据不存在,右表记录会出现,而左表

    1.7K40

    【收藏】一千行 MySQL 学习笔记

    MySQL中,可以对InnoDB引擎使用约束: 语法: foreign key (字段) references 主表名 (关联字段) [主表记录删除时的动作] [主表记录更新时的动作...在没有关联的情况下,可以设置null.前提是该列,没有not null。 可以不指定主表记录更改或更新时的动作,那么此时主表的操作被拒绝。...主表数据被更新(主键值更新),从表也被更新(键值更新)。主表记录被删除,从表相关记录也被删除。 2. set null设置null。...主表数据被更新(主键值更新),从表的设置null。主表记录被删除,从表相关记录设置null注意,要求该列,没有not null属性约束。...-- 左连接 left join 如果数据不存在,左表记录会出现,而右表null填充 -- 右连接 right join 如果数据不存在,右表记录会出现,而左表

    2K20

    一千行 MySQL 学习笔记

    MySQL中,可以对InnoDB引擎使用约束: 语法: foreign key (字段) references 主表名 (关联字段) [主表记录删除时的动作] [主表记录更新时的动作...在没有关联的情况下,可以设置null.前提是该列,没有not null。 可以不指定主表记录更改或更新时的动作,那么此时主表的操作被拒绝。...主表数据被更新(主键值更新),从表也被更新(键值更新)。主表记录被删除,从表相关记录也被删除。 2. set null设置null。...主表数据被更新(主键值更新),从表的设置null。主表记录被删除,从表相关记录设置null注意,要求该列,没有not null属性约束。...-- 左连接 left join 如果数据不存在,左表记录会出现,而右表null填充 -- 右连接 right join 如果数据不存在,右表记录会出现,而左表

    84520

    Laravel代码简洁之道和性能优化

    经过一番调研之后发现了一个堪称神器的扩展:laravel-upsert 这个 Laravel 扩展查询构建器和 Eloquent 添加了对 INSERT & UPDATE (UPSERT) 和 INSERT...这可以是单个记录或多个记录。 第二个参数是唯一标识记录的列。除 SQL Server 的所有数据库都要求这些列具有PRIMARY或UNIQUE索引。 提供要更新的列作为第三个参数(可选)。...默认情况下,更新所有列。您可以提供带有文字或原始表达式的列名和键值对(见下文)。...], [ 'post_id','日期' ], [ 'views' => DB :: raw ( 'stats.views + 1' )] ); 插入忽略 您还可以在忽略重复错误的同时插入记录...const CREATED_AT = 'createtime'; const UPDATED_AT = 'updatetime'; //设置日期格式为时间戳

    5.8K20

    MySQL 学习笔记

    MySQL中,可以对InnoDB引擎使用约束: 语法: foreign key (字段) references 主表名 (关联字段) [主表记录删除时的动作] [主表记录更新时的动作...在没有关联的情况下,可以设置null.前提是该列,没有not null。 可以不指定主表记录更改或更新时的动作,那么此时主表的操作被拒绝。...主表数据被更新(主键值更新),从表也被更新(键值更新)。主表记录被删除,从表相关记录也被删除。 2. set null设置null。...主表数据被更新(主键值更新),从表的设置null。主表记录被删除,从表相关记录设置null注意,要求该列,没有not null属性约束。...-- 左连接 left join 如果数据不存在,左表记录会出现,而右表null填充 -- 右连接 right join 如果数据不存在,右表记录会出现,而左表

    1.8K10

    MySQL 常用语句(值得收藏)

    MySQL中,可以对InnoDB引擎使用约束: 语法: foreign key (字段) references 主表名 (关联字段) [主表记录删除时的动作] [主表记录更新时的动作...在没有关联的情况下,可以设置null.前提是该列,没有not null。 可以不指定主表记录更改或更新时的动作,那么此时主表的操作被拒绝。...主表数据被更新(主键值更新),从表也被更新(键值更新)。主表记录被删除,从表相关记录也被删除。 2. set null设置null。...主表数据被更新(主键值更新),从表的设置null。主表记录被删除,从表相关记录设置null注意,要求该列,没有not null属性约束。...-- 左连接 left join 如果数据不存在,左表记录会出现,而右表null填充 -- 右连接 right join 如果数据不存在,右表记录会出现,而左表

    1.6K40
    领券