一张表是文章表articles,一张表是分类表categories,其中在文章表中有一个分类字段category_id,现在想在删除分类表中的某一分类时,该分类下的所有文章也一起被删除,那么这时候就可以用到外键约束...具体用法如下: 给文章表添加外键约束 $table- unsignedInteger('category_id')- comment('文章所属分类|select'); $table- foreign...references('id')- on('categories')- onDelete('cascade'); 其中需要注意的是分类表categories中的主键字段id与文章表articles中的外键字段...category_id的数据类型或者是数据长度要保持一致,因为作为主键的id值是从1开始自增的,所以在被其绑定的外键字段的数据类型就不能使用integer,而要改用unsignedInteger 以上这篇...laravel5.6中的外键约束示例就是小编分享给大家的全部内容了,希望能给大家一个参考。
1.检查两个字段的数据类型是否一致 2.检查两个字段的数据长度是否一致(有时候不指定int长度,长度是10,有时候是11)
1:创建一个父表,主键作为子表的外键: 1 create table province( 2 pId int primary key auto_increment, 3 pName varchar...(20) 4 ); 2:创建子表,外键是父表的主键: 1 create table user( 2 userId int primary key auto_increment, 3 userName varchar...(40), 4 pid int, 5 foreign key(pid) references province(pId) 6 ); 给一张表添加外键,即给子表的外键添加主键的规则: 在子表声明一个字段pid...int,用于作为子表的外键,foreign key(子表的外键字段) references 父表的表名(父表的主键的字段名); 3:当创建好数据表时添加外键约束: alter table user add...foreign key(pid) references province(pId); alter table 子表的数据表名 add foreign key(子表的外键名称) references 父表的数据表名称
本文为作者翻译文章,原文链接:Dealing with MySQL Error Code 1215: “Cannot add foreign key constraint” 在给一个表创建外键时,MySQL...parent_virt INT(10) NOT NULL, FOREIGN KEY (parent_virt) REFERENCES parent(column_virt) ) ENGINE INNODB; 创建外键失败的更多提示信息
一、单向一对一的关联映射 📷 1、Person类 📷 2、IdCard类 📷 3、Person.hbm.xml 📷 4、IdCard...
在重命名表之前,需要验证该表包含的外键在迁移文件中有明确的名字,而不是Laravel基于惯例分配的名字。...否则,外键约束名将会指向旧的数据表。...Laravel 还提供了创建外键约束的支持,用于在数据库层面强制引用完整性。...外键约束和索引使用同样的命名规则——连接表名、外键名然后加上“_foreign”后缀: $table- dropForeign(‘posts_user_id_foreign'); 或者,你还可以传递在删除时会自动使用基于惯例的约束名数值数组...: $table- dropForeign([‘user_id']); 你可以在迁移时通过以下方法启用或关闭外键约束: Schema::enableForeignKeyConstraints();
在重命名表之前,需要验证该表包含的外键在迁移文件中有明确的名字,而不是 Laravel 基于惯例分配的名字。...否则,外键约束名将会指向旧的数据表。...Laravel 还提供了创建外键约束的支持,用于在数据库层面强制引用完整性。...: $table- dropForeign(['user_id']); 你可以在迁移时通过以下方法启用或关闭外键约束: Schema::enableForeignKeyConstraints(); Schema...::disableForeignKeyConstraints(); 注:由于使用外键风险级联删除风险较高,一般情况下我们很少使用外键,而是通过代码逻辑来实现级联操作。
1.1.1 用户信息表 生成模型和迁移文件: php artisan make:model UserInfo -m 编写迁移文件(表规格): public function up() {...如果省略了第二个和第三个参数的话 Laravel根据方法名自动填充,会把第二个参数填充成 “user_id” 第三个参数填充 “id”,但是我们现在必须这样写,因为我自定义的外键是user_info_id...如果Laravel自动填充的话是找不到这个外键的 所以我们要手动的添加下。...belongsTo的第二个参数是 Account这个模型要用’user_info_id’外键去关联UserInfo模型。...》 希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。
Blueprint 类为我们提供了丰富的数据表字段定义方法,通过这些方法我们完成所有与数据表字段相关的操作,包括新增字段、删除字段、修改字段、添加索引和外键等等。...修改表字段,接下来我们要讨论如何对表字段设置索引和外键。...、移除外键 所谓外键指的是一张表的字段 A 引用另一张表的字段 B,那么字段 A 就是外键,通过外键可以建立起两张表之间的关联关系,这样,数据表之间就是有关联的了,而不是一个个孤立的数据集。...在迁移类中,如果我们想建立文章表中的 user_id 字段与用户表中的 id 之间的关联关系,可以通过这种方式来定义外键索引来实现: $table->foreign('user_id')->references...'); 注:不推荐使用外键,更不要使用外键约束功能,因为影响数据库性能,而且级联删除有可能造成非常严重的无法挽回的后果。
引言 使用laravel的数据库迁移功能进行表的创建,和迁移回滚之后,我们继续说说在设计中 表结构的更改之后的处理。以及如何为数据库填充一些伪数据作为测试。...比如我们创建的 events 表, 如果在迁移文件内添加字段,代码如下: [pic] 我们在数据库表中间的位置添加了一个 venue 字段。...我们需要空与非空约束,默认值约束,主键约束,外键约束等等数据库所具有的特性, 这才是关系型数据库的魅力。...events 本迁移文件我们要为表 events 添加一个 enabled 的布尔类型的字段。...写在最后 本文是对上一章所述laravel数据库迁移功能的补充。数据库迁移是一个比较大的动作, 特别是已经上线生产的应用数据库,如果非到更新迁移的地步不可,需要预期做好演练, 以应对可能的突发事故。
”这个库,但是很明显作者从2017年之后,就没有再维护过了,很显然是不适合laravel9.x去用的,所以我找到了一个可以完美平替的库 生成迁移 首先需要在config/database.php配置好数据库的连接信息...(亲测支持表前缀),然后使用composer安装库 composer require kitloong/laravel-migrations-generator 之后使用laravel的artisan就可以逆向生成迁移文件了...视图和外键将在 +1秒内创建....PROC-FILENAME] 自定义存储过程迁移文件名,默认为: [datetime]\_create_[name]_proc.php --fk-filename[=FK-FILENAME] 自定义外键迁移文件名...-default-index-names 不使用数据库索引进行迁移 --default-fk-names 不使用数据库外键进行迁移 --use-db-collation 使用现有数据库排序规则生成迁移
前面学了 Migrations 迁移建了数据表,现在可以学习数据库操作了。...是优雅的框架这么做跟 laravel 的优雅不符,所有 laravel 必定准备了其他方法,下面学下的填充就是向数据库批量添加数据的,简单概述下就是 数据库迁移+数据填充 = SQL 我们先来看看官网的介绍...Laravel 包含一个填充类可以为你的数据库填充测试数据,所有的填充类都放在 database/seeds 目录下。...UsersTableSeeder::class); $this->call(TestTableSeeder::class); } } 不过这里需要主要一下填充文件的执行顺序,我们会创建很多填充文件如果有外键的话执行顺序不对是会报错的所以需要严格的自己指定顺序...可以添加 --force 选项来强制运行填充命令: php artisan db:seed --force 相比于迁移,填充的价值就没有那么革命性了,而且填充更强大的功能需要模型的支持这个后面会学到的。
文章目录 一、Redis Key 操作 1、连接数据库 2、向数据库中添加值 3、查询数据库中所有的键 4、查询数据库中指定键是否存在 5、查询键类型 6、删除键 7、设置键过期时间 一、Redis...数据库 , 连接后 继续执行 auth 000000 命令 , 输入 数据库密码 ; 脚本示例 : D:\>redis-cli 127.0.0.1:6379> auth 000000 OK 2、向数据库中添加值...执行 set name1 Tom set name2 Jerry 命令 , 向数据库中插入上面两个键值对 , name1 = Tom , name2 = Jerry ; 脚本示例 : 127.0.0.1...有哪些 键 key ; 脚本示例 : 127.0.0.1:6379> keys * 1) "name1" 2) "name" 3) "name2" 4、查询数据库中指定键是否存在 执行 exists...string 6、删除键 执行 del name1 命令 , 或者 执行 unlink name1 命令 , 都可以 删除 键 ; del 删除 是 阻塞式操作 , 当场删除 ; unlink 删除
在 Laravel 中定义模型关联是每个 Laravel 开发者可能已经做过不止一次的事情。但是在试图实现关联时可能会遇到各种问题。因为 Laravel 有各种各样的关联,你应该选择哪一个?...我们通过 hasOne 方法告诉 Laravel User 模型有一个 Passport 。 注意: 所有用于定义关联的方法都有可选的额外参数,你可以在这些参数中定义本地键和外键。...默认情况下,Laravel会假设你在用户模型中定义了 passport_id ,因为你试图创建与 passport 模型的关联。创建迁移文件时也请注意这一点!...你可以通过创建迁移文件在 Laravel 中创建此中间表。 远程关联 远程一对一 has one through 关联通过单个中间关联模型实现。...添加约束 可以在查询时向关系添加约束。看看下面的示例: <?
文章目录 前言 一、插入新数据时报错外键约束? 二、对于出错 SQL 语句的分析 三、对于外码约束的分析 四、如何处理外键约束?...总结 ---- 前言 我们在使用 MySQL 数据库时,添加数据如果设计不合理很容易出现外码约束的情况,为什么会产生这样的问题?那我们该如何处理这一问题呢?依据又是什么?...一、插入新数据时报错外键约束?...三、对于外码约束的分析 我们根据数据库定义的参照完整性规则得知:外键 cpno 的取值不为空的情况下(如上 cpno=‘5’),与其对应的主键 cno 在参照表中必须存在。...四、如何处理外键约束? 插入数据的时候,所有的 cpno 字段暂时都置为 null,所有数据插入以后,再依次更新这些数据的 cpno 的值。该方法的优点是复杂性低,容易实现。
[img] 所以,laravel模型提供了关联关系,本文就来梳理梳理那些用法。 代码时间 我们不要PPT似的念稿子,罗列出所有的关系模型,那样不直观也不是高效学习的方式。...一个user对应一个profile,所以这是一对一的关系, 在User模型里添加如下声明: class User extends Model { public function profile(...除了在程序上下文的一致性保证外,还可以使用数据库的外键,在删除user时将profile关联删除。...那么只要修改迁移文件, 并添加如下内容: $table->integer('user_id')->unsigned(); $table->foreign('user_id')->references('...id')->on('users')->onDelete('cascade'); 写在最后 本文介绍了laravel模型关联的最简单的“一对一”,我们从程序角度和数据库角度讲解了 如何在删除资源时的一致性删除
$table->increments('id'); $table->integer('category_id')->unsigned()->comment('外键...published')->comment('文章是否发布'); $table->timestamps(); //Post表中category_id字段作为外键...$table->increments('id'); $table->integer('post_id')->unsigned()->comment('外键...text('content')->comment('评论内容'); $table->timestamps(); //Comment表中post_id字段作为外键...* * @return void */ public function down() { //删除表时要删除外键约束,参数为外键名称
laravel 数据库迁移 数据迁移文件存放在database/migrations 特点:可进行版本回退,便于团队开发 通过数据迁移文件创建表 1 创建数据库 配置.env文件选择数据库 DB_CONNECTION...down方法 up()://添加/修改 $table->increments('id');//自增,主键 int $table->string('name');//varchar()...$table->integer(‘字段’) down()方法 $table->dropColumn(‘字段’); up添加了几个字段,down相对删除对应字段,便于回退操作 2.更新表 php artisan...change() 重命名字段 $table->renameColumn('from','to') 删除字段 dropCloumn('字段名') dropCloumn(['字段名','字段2']) 外键约束...数据表名称_外键字段_foreign 删除外键 dropForeign('外键名') 开启/关闭外键约束 Schema::enableForeignKeyConstraints() Schema
引言 上一章我们介绍了比较简单的laravel模型关联关系中的一对一,介绍了关联操作方法。...在模型Profile中添加对应到User模型的关系: class Profile extends Model { public function user() { return...我们说关联关系需要外键,所以需要手动在events表内追加一个字段 state_id,用于指向刚才创建的表states的id字段。...比如创建事件时,手动为其指定状态: $event = new Event; $event->name = "Laravel Hacking and Pizza"; $event->state_id =...而效率也就是根据外键多查询一次SQL的消耗而已。但是明白其中原理之后, 在代码内耗时的操作里,也绝不可滥用关联关系,否则会严重消耗性能。
前言 之前,在文章:https://www.misiyu.cn/article/58.html 已经发过关于Laravel中的多对多关系了。 但回过头来,过了个把月再去看,我自己都忘了怎么写了。...确实看laravel的中文文档,看得糊里糊涂的。还是得在实践中理解啊。 情景假设 我有一张来源表(referers)来记录href和网页标题title。...细节 新建迁移文件就不说了。 我想说的重点是: 1、来源表和信息表可以没有任何外键约束,意思就是说各建各的,不用考虑外键什么的。...2、这两表没有任何外键关联,如果还要产生关系,那么就要第三张表来帮他们建立联系。 以上两点需要特别理解好 ---- 我前面说了,两张表(信息表、来源表)没有任何关系,那么就随便按需求建立就行。...重点是第三张表,第三张表最少需要2个字段:即两张表的外键 ? 注意: 1、你想要有其他字段也行,我们这里讨论最简单的情况。 2、第三张表的命名有要求,主要是Laravel默认情况的关系。
领取专属 10元无门槛券
手把手带您无忧上云