标 题 |
时 间 |
代码之道 — 从工程项目全局的角度考虑整个项目的组织和管理
|
04:47
|
代码之道 — 项目的前期准备工作
|
11:30
|
一个好的后台系统可以极大的简化项目的开发和项目维护
|
15:25
|
代码之道 — 兵马未动,测试数据先行,重新生成测试数据
|
07:44
|
代码之道 — 快速构建用于演示的博客前台
|
15:41
|
代码之道 — 解决数据库查询的 N+1 查询浪费问题
|
06:19
|
代码之道 — 逐步构建完善的数据缓存系统
|
09:50
|
缓存之道 — 最简单粗暴的缓存机制如何实现
|
18:34
|
缓存之道 — Stay hungry ,Stay foolish,谦逊是美德
|
08:01
|
缓存之道 — 将用户缓存进行更灵活的单独管理
|
08:37
|
缓存之道 — 将评论缓存进行整体粗粒度切割
|
07:28
|
缓存之道 — 中心化的管理方式会让维护和开发变得更简单
|
02:18
|
缓存之道 — 更新单个评论时如何对缓存进行高效处理
|
05:39
|
缓存之道 — 发布新评论、删除评论时如何高效对缓存数据处理
|
05:29
|
缓存之道 — 理解读写分离的切勿僵化,缓存系统继续出发
|
04:18
|
缓存之道 — 博客总览页面分页缓存机制最简单粗暴的实现方式
|
07:59
|
缓存之道 — 分页数据缓存机制大改造
|
05:27
|
缓存之道 — 创建自己的分页器
|
06:08
|
缓存之道 — 使用 Bootstrap4 完成分页器的美化和高亮功能
|
06:23
|
缓存之道 — 创建新的博客时如何对缓存数据进行处理
|
07:29
|
缓存之道 — 更新和删除博客时如何对缓存进行操作
|
05:49
|
缓存之道 — 实现所有Model类都可以使用的抽象缓存接口
|
13:26
|
缓存之道 — 实现适用于所有Model类的抽象缓存的分页器
|
07:22
|
老哥,把视频过了一遍,今天实际上手操作的时候出现了一个问题,在网上也没找到答案,异常如下:
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参数生成迁移文件的时候没注意数据之间的引用关系。