引言 使用laravel的数据库迁移功能进行表的创建,和迁移回滚之后,我们继续说说在设计中 表结构的更改之后的处理。以及如何为数据库填充一些伪数据作为测试。...比如我们创建的 events 表, 如果在迁移文件内添加字段,代码如下: [pic] 我们在数据库表中间的位置添加了一个 venue 字段。...很多时候,并不是说我们创建了表,并且指定了字段名,和字段数据类型就算完事儿了。 我们需要空与非空约束,默认值约束,主键约束,外键约束等等数据库所具有的特性, 这才是关系型数据库的魅力。...laravel提供了脚手架命令: php artisan migrate:status 输出内容类似下图: [pic] 还有两个高危指令,一个是 magrate:reset...写在最后 本文是对上一章所述laravel数据库迁移功能的补充。数据库迁移是一个比较大的动作, 特别是已经上线生产的应用数据库,如果非到更新迁移的地步不可,需要预期做好演练, 以应对可能的突发事故。
思考:如何提高Model层查询DB的效率?如何精简代码?...)-> unique (); $ table -> boolean ( ' active' ); $ table ->时间戳(); }); 使用upsert()插入一个新的用户或更新现有的一个...除 SQL Server 外的所有数据库都要求这些列具有PRIMARY或UNIQUE索引。 提供要更新的列作为第三个参数(可选)。默认情况下,将更新所有列。...作为使用复合键和原始表达式的示例,请考虑以下表,该表计算每个帖子和每天的访问者: Schema :: create ( 'stats' , function ( Blueprint $ table )...int类型,不是laravel默认的时间格式,并且我们的插入时间和更新时间也不是laravel默认的字段,我们需要做如下定义: //时间戳类型 public $timestamps =
写在最前 因为平时在用Mybatis的时候可以根据数据库逆向生成文件,我就在想laravel是不是也可以这么做,然后去网上找了一大堆,发现都在推“xethron/migrations-generator...(亲测支持表前缀),然后使用composer安装库 composer require kitloong/laravel-migrations-generator 之后使用laravel的artisan就可以逆向生成迁移文件了...视图和外键将在 +1秒内创建....=PROC-FILENAME] 自定义存储过程迁移文件名,默认为: [datetime]\_create_[name]_proc.php --fk-filename[=FK-FILENAME] 自定义外键迁移文件名...--default-fk-names 不使用数据库外键进行迁移 --use-db-collation 使用现有数据库排序规则生成迁移 --skip-log 不写入迁移的日志表 --skip-views
使用 查询构造器 也是通过一个 DB 门面,但是,在这里我们需要通过 table() 方法指定一个表名。之后的操作就全都是针对这个指定的表名了。接下来,我们就可以通过链式调用的方式进行数据库的操作。...我们又发现了一个设计模式在 Laravel 框架中的应用,意外不意外,惊喜不惊喜! 连表查询 普通的连表查询的使用还是非常简单的,我也就不多说了,下面的代码中也有演示。...一般的连表查询,我们只需要一个外键相对应即可,但是在我的实际业务开发中,还会有遇到多个键相对应的情况,这个才是我们接下来说的重点问题。...`sex` }); 代码中第一段的连表查询就是最普通的一个外键的查询,如果要实现多个外键连表的话,就需要使用第二种方法。...接下来,我们更进一层,下篇文章将看看如何通过 ORM 映射的 Model 来实现数据库操作的,并且看看它们是如何运行的。
还是从示例触发,看看关联关系到底解决的是什么问题,以及如何使用。...首先是数据库的准备,假设有如下两个表的字段对应关系: [pic] 使用命令行创建一个Profile模型,并同时创建迁移文件: php artisan make:model Profile --migration...文件, 用于生成对应的数据库 profiles 表。...除了在程序上下文的一致性保证外,还可以使用数据库的外键,在删除user时将profile关联删除。...id')->on('users')->onDelete('cascade'); 写在最后 本文介绍了laravel模型关联的最简单的“一对一”,我们从程序角度和数据库角度讲解了 如何在删除资源时的一致性删除
在对数据库进行操作之前,需要先创建数据表,在诸如 Laravel 这种现代框架中,通过代码驱动让数据表结构的定义变得非常简单。...每一张新表、每个新的字段、索引、以及外键都可以通过编写代码来定义,这样做的好处是在任何新环境中,你可以通过执行一个命令几秒钟就搞定项目的数据库结构。...修改表字段,接下来我们要讨论如何对表字段设置索引和外键。...('id')->on('users'); 如果你还想进一步指定外键约束(级联删除和更新,比如我们删除了 users 表中的某个 id 对应记录,那么其在文章表中对应 user_id 的所有文章会被删除...'); 注:不推荐使用外键,更不要使用外键约束功能,因为影响数据库性能,而且级联删除有可能造成非常严重的无法挽回的后果。
简介 所谓迁移就像是数据库的版本控制,这种机制允许团队简单轻松的编辑并共享应用的数据库表结构。迁移通常和 Laravel 的 schema 构建器结对从而可以很容易地构建应用的数据库表结构。...Laravel 的 Schema 门面提供了与数据库系统无关的创建和操纵表的支持,在 Laravel 所支持的所有数据库系统中提供一致的、优雅的、流式的 API。...'); Schema::dropIfExists('users'); 通过外键重命名表 在重命名表之前,需要验证该表包含的外键在迁移文件中有明确的名字,而不是 Laravel 基于惯例分配的名字。...否则,外键约束名将会指向旧的数据表。...Laravel 还提供了创建外键约束的支持,用于在数据库层面强制引用完整性。
Laravel 的Schema门面提供了与数据库系统无关的创建和操纵表的支持,在 Laravel 所支持的所有数据库系统中提供一致的、优雅的、平滑的API。...('users'); 通过外键重命名表 在重命名表之前,需要验证该表包含的外键在迁移文件中有明确的名字,而不是Laravel基于惯例分配的名字。...否则,外键约束名将会指向旧的数据表。...) {table) {table- dropIndex([‘state']); // Drops index ‘geo_state_index' }); 外键约束 Laravel 还提供了创建外键约束的支持...Schema::disableForeignKeyConstraints(); 以上这篇Laravel创建数据库表结构的例子就是小编分享给大家的全部内容了,希望能给大家一个参考。
,外键名称是基于模型名称。...在这个例子里,默认 Phone 模型数据库表会以 user_id 作为外键。如果想要更改这个默认,可以传入第二个参数到 hasOne 方法里。...更进一步,您可以传入第三个参数,指定关联的外键要对应到本身的哪个字段: return $this- hasOne('App\Phone', 'foreign_key'); return $this-...permission_role.permission_id', '=', 'permissions.id') - where('permission_role.role_id', $id) - get(); 以上这篇laravel...model 两表联查示例就是小编分享给大家的全部内容了,希望能给大家一个参考。
主题 描述 插入 指导您如何将单行插入表中。 插入多行 向您展示如何在表中插入多行。 更新 更新表中的现有数据。 连接更新 根据另一个表中的值更新表中的值。 删除 删除表中的数据。...使用 SERIAL 自增列 使用 SERIAL 将自动增量列添加到表中。 序列 向您介绍序列并描述如何使用序列生成数字序列。 标识列 向您展示如何使用标识列。 更改表 修改现有表的结构。...重命名表 将表的名称更改为新名称。 添加列 向您展示如何向现有表添加一列或多列。 删除列 演示如何删除表的列。 更改列数据类型 向您展示如何更改列的数据。 重命名列 说明如何重命名表中的一列或多列。...了解 PostgreSQL 约束 主题 描述 主键 说明在创建表或向现有表添加主键时如何定义主键。 外键 展示如何在创建新表时定义外键约束或为现有表添加外键约束。...PostgreSQL 视图 我们将向您介绍数据库视图概念,并向您展示如何管理视图,例如在数据库中创建、更改和删除视图。
数据库该表的主键Id是int自增的。Id为1的数据曾经存在过,但是被我删除了。...当我填写了主键值之后,一切都是好用的了: 更改现有的种子数据 我在HasData方法里更改了现有的种子数据,但是主键的值并没有改: 执行Update-Database时的SQL语句: 可以看到是根据主键对数据库里面的数据进行...其结果也和我想的一样,就是更新了现有的数据: 如果我把HasData里种子数据的主键值修改了 我把四川的主键从2改为3。...我必须单独添加City的种子数据,并且设置好外键。...Model的主键是private set的; 这时我们就无法在HasData里设置主键/外键的值了,那么如何来添加种子数据呢?
数据库该表的主键Id是int自增的。Id为1的数据曾经存在过,但是被我删除了。 然后看看会发生什么 生成的迁移类 命令:Add-Migration Xxx 看一下生成的迁移类的内容: ?...更改现有的种子数据 我在HasData方法里更改了现有的种子数据,但是主键的值并没有改: ? 执行Update-Database时的SQL语句: ?...可以看到是根据主键对数据库里面的数据进行Update动作。 其结果也和我想的一样,就是更新了现有的数据: ? 如果我把HasData里种子数据的主键值修改了 ? 我把四川的主键从2改为3。...OK 如果无法在Model里设置主键/外键 有时,我们在主从关系的Model里不明确定义外键;有时候我们Model的主键是private set的; 这时我们就无法在HasData里设置主键/外键的值了...但是如果数据库已经存在了,那么EnsureCreated()不会更新数据库,也不会添加种子数据了。
在本文中,我会向你展示如何在 Laravel 中从头开始实现 repository 设计模式。我将使用 Laravel 5.8.3 版,但 Laravel 版本不是最重要的。...这意味着你的业务逻辑不需要了解如何检索数据或数据源是什么,业务逻辑依赖于 repository 来检索正确的数据。 关于这个模式,我看到有人将它误解为 repository 被用来创建或更新数据。...除了默认的 Laravel 时间戳字段外,我们的博客只需要 标题、内容 和 用户 ID 字段。 <?...config:clear 运行迁移 现在我们已经设置好了数据库,可以开始运行迁移了: php artisan migrate 这将会创建 blogs 表,包含了我们在迁移中声明的 title , content...repository 设计模式也使更改数据源变得更加容易。在这个例子中,我们使用 MySQL 数据库来检索我们的博客内容。我们使用 Eloquent 来完成查询数据库操作。
今天我们将在定义好模型关联的基础上进行关联查询、插入和更新操作,看看如何借助模型关联提高代码的可读性并提高编码效率。...,这样做的好处是不需要指定关联模型与父模型的外键关联字段值,Eloquent 底层会自动判断并设置。...user_id' => 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。
1 实现一对一关系 1.1 准备工作 首先我们需要创建两张表和对应的两个模型,第一个模型是用户表,第二个模型是账号表。...如果省略了第二个和第三个参数的话 Laravel根据方法名自动填充,会把第二个参数填充成 “user_id” 第三个参数填充 “id”,但是我们现在必须这样写,因为我自定义的外键是user_info_id...如果Laravel自动填充的话是找不到这个外键的 所以我们要手动的添加下。...belongsTo的第二个参数是 Account这个模型要用’user_info_id’外键去关联UserInfo模型。...相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总
通过前两篇文章的铺垫,我们很容易就能操作 Laravel 中的模型,但是,真正要改变的是你看待这种操作数据库的方式。要把数据库里的数据想像成是编程语言中的对象,这才是 ORM 最主要的内容。...这个其实和数据库的关联操作是有关系的。在标准的数据库结构中,我们是有主外键的概念的,但是,说实话,在 MySQL 中使用主外键的情况还真的是非常少。...之所以要有外键这个东西,主要也是为了数据之前能够在数据库层面保持一定的关联,这样我们就可以做一些特殊的操作,比如说定义数据库的事件或者定时任务之类的,或者在关联删除的时候能够更加有效率。...当然,在 Laravel 中,可以不在数据库层面进行严格的设置,就可以在框架代码中实现主外键的关联。...别急,我们再来看看源码,看看框架中是如何把调用属性变成调用一个方法的。
介绍 在本教程中,我们将介绍如何设置SSH密钥以支持代码部署/发布工具,配置系统防火墙,配置和配置数据库(包括密码!),以及设置任务调度程序(crons)和队列守护进程。...如果您还没有这样做,请将目录更改为ansible-php。 cd ~/ansible-php/ 打开我们现有的剧本进行编辑。...第7步 - 迁移数据库 在此步骤中,我们将运行数据库迁移以设置数据库表。...Cron任务是在设定的时间表上运行的命令,可用于为您的应用程序执行任意数量的任务,例如执行维护任务或发送电子邮件活动更新 - 基本上任何需要定期完成而无需手动用户干预的任务。...此作业在运行时更新数据库以显示其正在运行。 我们现在有一个工作示例Laravel应用程序,其中包括正常运行的cron作业和队列工作程序。
此外此方法执行后会将下方模型的外键id至为0。...$post = Post::findOrFail(3); // attach方法的参数只需要传递id(整型)即可,中间表会自动更新。...$post- tags()- attach(2); $post- save(); } 当追加关系时同样也可以将一个中间表数据加入第二个参数,以此更新中间表的其他列。...更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及...《php常见数据库操作技巧汇总》 希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。
应用Active Record时,每一个类的实例对象唯一对应一个数据库表的一行(一对一关系)。...Installation: composer require barryvdh/laravel-debugbar --dev 二、一对一关系映射 2.1 创建表 public function up()...$table->string('phone'); $table->unsignedInteger('user_id'); //显示的声明外键...:通知数据库根据外键关联表和建立索引,提高运行速度 $table->foreign('user_id') ->references('id')...自定义外键: return $this->hasOne(Profile::class,'显示指定自定义外键'); 2.4 一对一测试 依赖注入Request $request,获取当前登录用户$request
输入后,按Enter键继续。 2、创建数据库 一旦登录,您就可以使用SQL命令来创建数据库。以下是一个简单的示例,演示如何创建一个名为“mydatabase”的数据库。...; 这将删除名为“mydatabase”的数据库及其所有内容。...10、添加外键约束 您可以使用`ADD CONSTRAINT`子句向表中添加外键约束以维护引用完整性。...fk_customer的外键约束,该约束引用customers表中的id列。...删除外键约束使用类似的语法。使用ALTER TABLE语句时,请确保在执行任何结构更改之前备份数据库或表。这些更改可能会影响数据完整性或查询性能,并且在某些情况下可能需要重新构建表或重新索引数据。
领取专属 10元无门槛券
手把手带您无忧上云