本期视频登录后即可观看
代码之道 - 高效缓存
23 集视频
3小时11分钟
本期 Laravel 视频教程我们为项目进行基本的准备工作,后续的工作将从这里初步展开并实现,代码的高效性和代码的简洁性在某种程度上可以达成一个非常优雅的平衡,在真实的项目当中,代码重构和代码的组织其实更多的是反应了项目的管理者是否对项目进行了正确的规划和妥善的管理。
老哥,把视频过了一遍,今天实际上手操作的时候出现了一个问题,在网上也没找到答案,异常如下:
PDOException::("SQLSTATE[HY000]: General error: 1824 Failed to open the referenced table 'posts'")
导致了 posts 数据表不能正常创建,可能是因为抛出了异常,所以都没有执行,因为单独指定 posts 的 migrations 文件确可以正常创建。
望老哥答疑呀!
这个我也是第一次见,一起涨涨姿势看能不能解决它,你是怎么创建表格的时候出现的这个问题啊
我感觉不太对,是不是你评论的表格和posts表格顺序不对了,创建comments表格的时候需要引用posts表格中的字段,但是你两张表格的创建顺序反了的话,就会出现这类问题,它先去创建comments表了
我有过这个怀疑,但是我们是将 migrations 文件一起编辑好之后去执行 php artisan migrate 去让框架自动去生成呀,这样的话顺序问题又怎么说呢?难道是要从最开始的生成 model 开始就要按照顺序来么?我记不清是先生成的哪个了,现在我直接使用了 voyager 的测试数据,目前还算顺利,晚上的时候我测试下是否和创建 model 顺序有关。
一起执行php artisan migrate 的时候,表格按照migration文件中的时间(migration文件名中包含的时间)先后依次创建,如果comments migration的时间早于posts migration的时间,那就先会去创建comments表格,这个时间特别重要,很多人都在这里翻了船也不知道为啥,这个跟生成model的先后没啥关系,跟migration文件生成的顺序有重大关系
刚才简单测试了一下,使用 php artisan make:model *** -a 创建 model 时,先创建的要比后创建的时间要大(文件名上的时间),后面再去生成数据表时就会出现上面说到的问题,而如果先创建 Post ,后创建 Comment ,生成时则没有问题。简单测试了一下,不知道是否正确,老哥有空了可以试一下,然后出来答疑(权威一些)。
这就是我之前回复说的问题,用-a参数就会顺便生成migration文件,所以必须保证他们的顺序要正确,不然肯定遇到问题,问题不是出在创建model上,主要就是因为使用 -a 或者-m参数生成迁移文件的时候没注意数据之间的引用关系。