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

laravel5.6中约束示例

场景 如果现在有两张表,一张表是文章表articles,一张表是分类表categories,其中在文章表中有一个分类字段category_id,现在想在删除分类表中某一分类时,该分类下所有文章也一起被删除...,那么这时候就可以用到外约束 具体用法如下: 给文章表添加约束 $table- unsignedInteger('category_id')- comment('文章所属分类|select');...$table- foreign('category_id')- references('id')- on('categories')- onDelete('cascade'); 其中需要注意是分类表categories...中主键字段id与文章表articles中字段category_id数据类型或者是数据长度要保持一致,因为作为主键id值是从1开始自增,所以在被其绑定字段数据类型就不能使用integer...,而要改用unsignedInteger 以上这篇laravel5.6中约束示例就是小编分享给大家全部内容了,希望能给大家一个参考。

1.7K31

Laravel创建数据库表结构例子

drop或dropIfExists方法: Schema::drop('users'); Schema::dropIfExists('users'); 通过重命名表 在重命名表之前,需要验证该表包含在迁移文件中有明确名字...否则,约束名将会指向旧数据表。...Laravel 还提供了创建约束支持,用于在数据库层面强制引用完整性。...约束和索引使用同样命名规则——连接表名、键名然后加上“_foreign”后缀: $table- dropForeign(‘posts_user_id_foreign'); 或者,你还可以传递在删除时会自动使用基于惯例约束名数值数组...: $table- dropForeign([‘user_id']); 你可以在迁移时通过以下方法启用或关闭约束: Schema::enableForeignKeyConstraints();

5.5K21
您找到你想要的搜索结果了吗?
是的
没有找到

Laravel5.7 数据库操作迁移实现方法

或 dropIfExists 方法: Schema::drop('users'); Schema::dropIfExists('users'); 通过重命名表 在重命名表之前,需要验证该表包含在迁移文件中有明确名字...否则,约束名将会指向旧数据表。...删除数据列 要删除一个列,使用 Schema 构建器 dropColumn 方法,同样,在此之前,确保已经安装了 doctrine/dbal 依赖: Schema::table('users',...index 'geo_state_index' }); 约束 Laravel 还提供了创建约束支持,用于在数据库层面强制引用完整性。...约束和索引使用同样命名规则 —— 连接表名、键名然后加上“_foreign”后缀: $table- dropForeign('posts_user_id_foreign'); 或者,你还可以传递在删除时会自动使用基于惯例约束名数值数组

3.7K31

Laravel 通过迁移文件定义数据表结构

每一张新表、每个新字段、索引、以及都可以通过编写代码来定义,这样做好处是在任何新环境中,你可以通过执行一个命令几秒钟就搞定项目的数据库结构。...修改表字段,接下来我们要讨论如何对表字段设置索引和。...A 引用另一张表字段 B,那么字段 A 就是,通过可以建立起两张表之间关联关系,这样,数据表之间就是有关联了,而不是一个个孤立数据集。...('id')->on('users'); 如果你还想进一步指定约束(级联删除和更新,比如我们删除了 users 表中某个 id 对应记录,那么其在文章表中对应 user_id 所有文章会被删除...'); 注:不推荐使用,更不要使用约束功能,因为影响数据库性能,而且级联删除有可能造成非常严重无法挽回后果。

2.1K20

3分钟短文 | Laravel模型关联删除表记录,用观察者还是事件钩子

本文就来说说 Laravel ORM 操作中事件钩子。 学习时间 如果想要实现一节所说需求,代码写起来可能是这样。 $user->delete(); 当该事件发生时,我们接着执行关联删除。...这样在删除动作只用维护一处代码,程序内所有的 delete 事件都会自动触发该动作,复用率大大地提升了。 再进一步 实现同样需求,往往有很多种方式。...MySQL提供了约束,并且可以定义触发器用于批次动作处理。...那么使用 Laravel migrations 时,创建photo表关联事件: $table->foreign('user_id')->references('id')->on('users')-...写在最后 本文通过3种方式,实现了Laravel中关联删除表记录功能。

1.8K10

3分钟短文:书接上回,Laravel数据库迁移那些个小技巧

引言 使用laravel数据库迁移功能进行表创建,和迁移回滚之后,我们继续说说在设计中 表结构更改之后处理。以及如何为数据库填充一些伪数据作为测试。...[图片] 数据约束 一章说到数据库迁移回滚,可以手动控制回滚到哪一批次迁移位置。...我们需要空与非空约束,默认值约束,主键约束约束等等数据库所具有的特性, 这才是关系型数据库魅力。...,所以laravel所组装SQL就默认是最后一个字段之后。...写在最后 本文是对上一章所述laravel数据库迁移功能补充。数据库迁移是一个比较大动作, 特别是已经上线生产应用数据库,如果非到更新迁移地步不可,需要预期做好演练, 以应对可能突发事故。

1.7K30

laravel - 根据数据库逆向生成迁移文件

”这个库,但是很明显作者从2017年之后,就没有再维护过了,很显然是不适合laravel9.x去用,所以我找到了一个可以完美平替库 生成迁移 首先需要在config/database.php配置好数据库连接信息...(亲测支持表前缀),然后使用composer安装库 composer require kitloong/laravel-migrations-generator 之后使用laravelartisan就可以逆向生成迁移文件了...视图和将在 +1秒内创建....=PROC-FILENAME] 自定义存储过程迁移文件名,默认为: [datetime]\_create_[name]_proc.php --fk-filename[=FK-FILENAME] 自定义迁移文件名...-default-index-names 不使用数据库索引进行迁移 --default-fk-names 不使用数据库进行迁移 --use-db-collation 使用现有数据库排序规则生成迁移

1.5K50

MySQL约束

1.2、约束作用 对表中数据进行限制,保证数据正确性、有效性和完整性。一个表如果添加了约束不正确数据将无法插入到表中。约束在创建表时候添加比较合适。...自增长只能用在主键 非空与唯一约束可以设置在N个字段 六、默认值 默认值就是:当我们在增加记录时候如果不去设置值,那么自动会用默认值补齐,字段默认默认值是null 6.1、默认值格式 字段名...解决方法: 使用约束 7.4、什么是约束 一张表一个字段受限于另外一张表一个字段对应值。这里涉及到两张表:被引用表叫主表(父表),另外一张叫从表(子表)。...**子表:**定义了表,取值要么取父表中字段对应值,要么取NULL值,严重受限于父表 **父表:**被引用字段要具有唯一性(绝大多数都是用父表主键) 八、约束 8.1、约束格式...格式一: [constraint][约束名称] foreign key(字段名) references 主表名称(主键字段名); #在create table时设置 案例: 创建一个班级表

6.5K10

还得再来聊聊Laravel对多对模型一些事

前言 之前,在文章:https://www.misiyu.cn/article/58.html 已经发过关于Laravel多对多关系了。 但回过头来,过了个把月再去看,我自己都忘了怎么写了。...确实看laravel中文文档,看得糊里糊涂。还是得在实践中理解啊。 情景假设 我有一张来源表(referers)来记录href和网页标题title。...目前需求是信息表里面的多个信息可能同属于来源表中一条记录。 同样,来源表中多条信息可能属于信心表中一条记录。 简言之就是,这是多对多关系。 细节 新建迁移文件就不说了。...我想说重点是: 1、来源表和信息表可以没有任何约束,意思就是说各建各,不用考虑什么。 2、这两表没有任何关联,如果还要产生关系,那么就要第三张表来帮他们建立联系。...重点是第三张表,第三张表最少需要2个字段:即两张表 ? 注意: 1、你想要有其他字段也行,我们这里讨论最简单情况。 2、第三张表命名有要求,主要是Laravel默认情况关系。

1.6K00

Laravel Eloquent 模型关联关系(下)

在渴求式加载中,也可以通过闭包传入额外约束条件,只不过这个约束条件是对关联模型自身过滤,不影响目标模型查询: $post = Post::with(['comments' => function...>orderBy('created_at', 'desc'); }]); 关联插入与更新 一对多关联记录插入 新增关联模型时候,可以在父模型上调用相应方法直接插入记录到数据库,这样做好处是不需要指定关联模型与父模型关联字段值...=> mt_rand(1, 15)], ['content' => $faker->paragraph, 'user_id' => mt_rand(1, 15)] ]); 更新一对多所属模型字段...如果是要更新新创建模型实例所属模型(父模型)字段,比如以 posts 表为例,新增记录想要更新 user_id 字段,可以这么实现: $user = User::findOrFail(1);...空对象模型 如果字段 user_id 允许为空的话,当我们访问 Post 模型 author 属性时,默认返回为 null。

19.5K30

Laravel 模型关联基础教程详解

Laravel 中定义模型关联是每个 Laravel 开发者可能已经做过不止一次事情。但是在试图实现关联时可能会遇到各种问题。因为 Laravel 有各种各样关联,你应该选择哪一个?...如果你不完全理解 Laravel 关联在这一点是如何工作,别担心,读完这篇文章后,你会更好地理解它。 我们应该使用哪个模型关联? 要回答这个问题,首先你要知道有哪些可用选项。...我们通过 hasOne 方法告诉 Laravel User 模型有一个 Passport 。 注意: 所有用于定义关联方法都有可选额外参数,你可以在这些参数中定义本地。...在 User 模型每个实例,我们都可以得到对应 Passport 和 Invoice。 <?...添加约束 可以在查询时向关系添加约束。看看下面的示例: <?

5.5K31

超详细MySQL三万字总结

图形化界面备份与还原 数据库表约束 数据库约束概述 主键约束 唯一约束 非空约束 默认值 约束 表与表之间关系 表关系概念 一对多 多对多 一对一 数据库设计 数据规范化 1NF 2NF...一个表如果添加了约束不正确数据将无法插入到表中。约束在创建表时候添加比较合适。...什么是约束: 什么是:在从表中与主表主键对应那一列,如:员工表中 dep_id 主表: 一方,用来约束别人表 从表: 多方,被别人约束表 创建约束语法: 1、新建表时增加...: [CONSTRAINT] [约束名称] FOREIGN KEY(字段名) REFERENCES 主表名(主键字段名) 2、已有表增加: ALTER TABLE 从表 ADD [CONSTRAINT...两种建表原则: 一对一建表原则 说明 唯一 主表主键和从表(唯一),形成主外关系,唯一 UNIQUE 是主键 主表主键和从表主键,形成主外关系 数据库设计 数据规范化 什么是范式

3.3K30

Laravel学习记录--Model

Laravel 自带 软删除功能 就利用全局作用域从数据库中提取「未删除」模型。编写自定义全局作用域可以提供一个方便、简单方法来确保给定模型每个查询都受到一定约束。...如: hasOne(class,foreignkey,primarykey); class:关联模型类名 foreignkey:关联模型,如果不指定默认在这里默认为 muser_id...foreignkey:当前模型 primarykey:父表主键 <?...使用渴求式加载,即根据预先需求查询出所有数据 为了验证[渴求式加载]好处,举下列例子 这里用到了Laravel Debugbar 调试 安装方法可参照我另一个博客 - - - Laravel...为null,前提是uid字段允许为空,如果不允许为空会抛出异常 空对象模型 如果字段uid允许为空,当我们访问Phone模型muser属性(注意这里是属性,而不是方法)时,默认返回null,Eloquent

13.4K20

mysql基础

表级约束,对过个数据列建立约束;列级约束,对一个数据列建立约束。...功能分: not null 非空约束 primary key 主键约束 unique key 唯一约束 default 默认约束 foreign key 约束 约束实现一对一或一对多关系。...创建约束,父表和子表必须要有相同存储引擎,而且禁用临时表,具有表称为子表,子表所参照表为父表。 数据库存储引擎只能为InnoDB。...列和参照列必须具有相同数据类型,列,参照列。 列和参照列必须创建索引,如果列不存在索引的话,mysql将自动创建索引,参照列不存在索引,不会自动创建索引。...列不创建,会自动创建,子;参照列不创建的话,不会自动创建,为父。 结言 好了,欢迎在留言区留言,与大家分享你经验和心得。

54250

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

经过一番调研之后发现了一个堪称神器扩展:laravel-upsert 这个 Laravel 扩展为查询构建器和 Eloquent 添加了对 INSERT & UPDATE (UPSERT) 和 INSERT...:优化前5条sql,优化后2条sql laravel-upsert 扩展特性 安装 composer require staudenmeir/laravel-upsert:"^1.0" 用法 插入和更新...第二个参数是唯一标识记录列。除 SQL Server 所有数据库都要求这些列具有PRIMARY或UNIQUE索引。 提供要更新列作为第三个参数(可选)。默认情况下,将更新所有列。...作为使用复合和原始表达式示例,请考虑以下表,该表计算每个帖子和每天访问者: Schema :: create ( 'stats' , function ( Blueprint $ table )...LaravelUpsert\Eloquent\HasUpsertQueries; 因为我们数据库时间是int类型,不是laravel默认时间格式,并且我们插入时间和更新时间也不是laravel默认字段

5.7K20
领券