目标
写个记账小程序,学习用Laravel创建数据库表结构及数据简单处理,理解Laravel中MVC的程序架构。
准备工作
- VISO画了个简单的类图,主要有record及user类及几个全局的方法,这两个类将对应数据库两个表。
- phpmyadmin创建数据库
- Laravel创建项目工程
- 进入项目工程修改config\database.php中数据库连接参数
开始
阅读5.0 API教程中数据库部分,对于开始提到的建立迁移文件和创建迁移内容没有理解,照葫芦画瓢操作后发现没有真正理解,通过phpmyadmin发现数据库及项目中生成的文件后理解如下:
php artisan make:migration create_users_table
这个只是在项目下创建文件名为create_users_table 的迁移文件名,不会对数据库做任何操作。
如果该命令后加上–create 参数则表示该迁移文件将创建新表,但是这里也只是在create_users_table文件中加入将要创建新表的代码,而不是理解创建新表
php artisan migrate
执行这个命令后才是真正执行迁移文件中的代码(执行所有未执行的迁移),才会真正在数据库中创建表。
在第一次执行migrate是提示连接mysql错误,错误描述中发现登录的用户名不是database.php中的name,一番搜索后发现是.env中填写的name,暂时没理解这两个文件中配置的差别,但修改.env中的用户名及密码后解决,暂时放过这个问题。
通过这个错误,还发现项目中已经有个创建user表的迁移文件,想到了Laravel自带的auth认证,可能是这个带的,因此user表用系统带的
创建record表
有了前面的经验,两步搞定
php artisan make:migration create_records_table --create records
php artisan migrate
创建表结构
根据文档中数据库–结构生成器章节的介绍,修改迁移文件,在up文件中的Schema::create中加入相关内容。
然后执行迁移命令
php artisan migrate
提示没有执行任何迁移动作!百度之,理解到在执行迁移文件后如果直接修改迁移文件需要回滚然后再执行新迁移文件才会生效……(也很容易想明白:迁移文件一直存在,如果每次迁移都直接执行迁移文件,就意味每次都从头开始创建)。ok,先回滚,再执行迁移
php artisan migrate:rollback
php artisan migrate
迁移成功,新的表结构进入到数据库中。
执行迁移回滚命令时不会改写迁移文件内容,即如果已经修改了迁移文件,再执行回滚命令,不用担心一觉回到解放前(因为我担心过一次,小心地把代码copy一份)
(未完待续,去理解下MVC,回来考虑如何搭程序结构,计划用Eloquent 操作数据)