Loading... 在laravel 9及之前的版本里,当我们的数据结构已经生效后,再想着更改某一字段的数据结构及一些特定属性时,我们得在相应的migration文件里使用`change()`方法,但是一用到这个`change()`方法,第一次migrate的时候,它就会提示我们去安装一下`doctrine/dbal`这个组件。 比如这一点,在我们的[《Laravel 9 & 10 优雅实战入门(第三版)》](https://www.pilishen.com/course/1)课程第五章第7集《更改数据结构的两种方法》里就给大家演示了:当我们一个缩略图的字段,原来是必填选项,后期如果想着改成nullbable(),就得经历上方所说的步骤了。 好消息是,如果是在laravel 10里,再有类似操作的时候,就不需要额外安装这个`doctrine/dbal`了。这个更改的方向是对的、好的,但是这个改动也有一些注意事项: 比如下面的例子: ```php $table->integer('user_balance')->unsigned()->default(0)->comment('balance'); // `user_balance` 是整数,而且不为负,默认是0,备注为balance ``` 如果说我们想着改变其类型为`bigInteger`,我们可能会直接这样: ```php $table->bigInteger('user_balance')->change(); ``` 但是呢,这样只会改变其integer这一点,原来我们定义的UNSIGNED, DEFAULT 和 COMMENT这几个属性就会被drop掉,这很可能不是我们想要的。 而要保留已有的其他属性,就得这样: ```php $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 优雅实战入门(第三版)》](https://www.pilishen.com/course/1)这一课程的扩展文章,该课程历时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思想,高屋建瓴,让你一开始就养成高手的思维。 Last modification:March 7, 2023 © Allow specification reprint Like 如果觉得我的文章对你有用,请随意赞赏