likes
comments
collection
share

Laravel 10 新特性系列二:更改已有数据结构,不再需要安装doctrine/dbal组件啦

作者站长头像
站长
· 阅读数 23

在laravel 9及之前的版本里,当我们的数据结构已经生效后,再想着更改某一字段的数据结构及一些特定属性时,我们得在相应的migration文件里使用change()方法,但是一用到这个change()方法,第一次migrate的时候,它就会提示我们去安装一下doctrine/dbal这个组件。

比如这一点,在我们的《Laravel 9 & 10 优雅实战入门(第三版)》课程第五章第7集《更改数据结构的两种方法》里就给大家演示了:当我们一个缩略图的字段,原来是必填选项,后期如果想着改成nullbable(),就得经历上方所说的步骤了。

好消息是,如果是在laravel 10里,再有类似操作的时候,就不需要额外安装这个doctrine/dbal了。这个更改的方向是对的、好的,但是这个改动也有一些注意事项:

比如下面的例子:

$table->integer('user_balance')->unsigned()->default(0)->comment('balance'); 
// `user_balance` 是整数,而且不为负,默认是0,备注为balance

如果说我们想着改变其类型为bigInteger,我们可能会直接这样:

$table->bigInteger('user_balance')->change(); 

但是呢,这样只会改变其integer这一点,原来我们定义的UNSIGNED, DEFAULT 和 COMMENT这几个属性就会被drop掉,这很可能不是我们想要的。

而要保留已有的其他属性,就得这样:

$table->bigInteger('user_balance')->unsigned()->default(0)->comment('balance')->change();

如果说你已经安装了doctrine/dbal,而且有多个数据库连接的话,那么可以通过Schema::useNativeSchemaOperationsIfPossible();这个命令来使用laravel 10内置的数据更改方式,这条命令可以放到App\Providers\AppServiceProvider的boot方法中。

再一个就是,sqlite的数据库,并不支持这一点,你就还得需要安装doctrine/dbal组件。

该篇是我们《Laravel 9 & 10 优雅实战入门(第三版)》这一课程的扩展文章,该课程历时6年,历经三版,是咱们国内最优雅、最正宗的laravel入门兼实战课程。

  • 课程首发于2016年,当时是laravel 5.2的版本;
  • 第二版发布于2018年,当时针对laravel5.7-8.*的学习;
  • 第三版发布于2022年9月份,针对laravel 9.x、10.x、11.x的学习,所以如果你参加现在的课程,就相当于将来即使到laravel 11,也能继续学习,不需要额外购买,一口气锁定了laravel 9-11的学习。

** 第三版的一些升级与优势:**

  • 课程内容完全重制,整体升级到了laravel 9,最近也会陆续加上laravel 10的内容
  • 为大家提供了pilishen自定义的一键docker开发环境,让大家不再为环境搭建麻烦,马上我们的环境也将同时支持laravel9和10
  • 使用了最新的vite前端编译环境,介绍了其原理,并进行了各种配置和优化
  • 内容讲解上更加灵活、个性化,基于实战开发的需要,以问题解决为线索,用到哪里讲哪里,不再受传统的章节结构限制
  • 单集内容时长基本是第二版的2倍,添加了更多的细节和原理介绍,能帮助不同层次的同学获得各自所需的知识
  • 将原来第二套的前半部分内容,加到了第一套内,让同学们对一些中高级的知识点有所接触和了解
  • 适当放慢了语速,方便同学们跟着敲代码,减少空格暂停的时间,基础好的同学可自行加速播放
  • 增加了对各种常见错误、异常的演示和讲解,以提高同学们在实际开发中的问题解决能力

如果你总觉得没有体验到laravel的优雅,那么这套教程必看; 国内最好的入门进阶教程,以最规范简洁的方式让你真正体验laravel的优雅,日常逻辑两三行代码解决,而且全程贯穿OOP思想,高屋建瓴,让你一开始就养成高手的思维。

感兴趣的同学可以到我们的课程公开群做客咨询:109256050(公开课@pilishen.com) 已经购买过的同学,可以加入课程专门的付费群:584207847(pilishen.com教程网)