laravel - 雄辩的一对多关系在生产服务器上不起作用
问题描述
我知道这已经被问过很多次了,但是我已经在 stackoverflow 上搜索了过去 3 个小时的答案,但没有成功,在我的情况下没有一个解决方案有效。我的模型关系在 localhost 上运行良好,但只要将我的更改推送到生产服务器(使用相同的配置),模型之间的关系就会停止工作。
这是我的 File.php 模型与 Language.php 模型的关系
public function language()
{
return $this->belongsTo('App\Language', 'language_id', 'id');
}
我什至指定了链接它们的键。
这就是问题发生的地方。在我的本地机器上,这段代码一切正常
$files = File::orderBy('updated_at', 'DESC')->get();
return $files[0]->language;
现在,当我在生产服务器上执行相同操作时,我得到空结果。你可能会说问题出在数据库上的记录上,其实不是。这是一个证明:来自生产数据库的文件记录
外键列的数据类型(languages表数据类型中的language_id和id列均为无符号大整数,长度为20)。
这不仅仅是语言模型的问题,我还有一些与相同逻辑链接的其他模型,尽管它们在本地主机上工作,但它们都没有在生产中工作。
顺便说一句,在本地主机上的 phpmyadmin 中,我可以根据外键连接选择值,但是在服务器上我不能这样做:
服务器:
任何帮助将非常感激
编辑:我发现表引擎存在问题,必须设置为 innoDB(检查答案),以便修复数据库问题。但是,我仍然无法让 Laravel 识别这些关系。
解决方案
对于任何有类似问题的人,请检查您的表是使用 InnoDB 引擎创建的,而不是 MyISAM 或任何其他引擎。在 laravel 中,您可以在 app/config/database.php 中指定它。只需在 MySQL 配置下将引擎参数更改为“InnoDB”而不是 null。
这解决了数据库的问题,laravel 方面仍然坏了
推荐阅读
- python - 使用 sha512_crypt 解密密码 - python3
- symmetricds - 初始加载在 sym_x 表模式中创建我的表
- android - Notification is coming sometimes and sometimes not coming when the app is in foreground using firebase notifications in Flutter for android
- mysql - Names of months as names of columns in MySQL
- android - RX How to subscribe only to specific events on a Subject
- python - 通过 Wikipedia 构建语料库:ModuleNotFoundError: No module named 'gensim'
- c++ - 使用 QXmlStreamReader 解析 XSD
- c++ - 将 lambda 用于回调函数作为 C 函数参数
- javascript - 这个倒计时的执行顺序是什么?
- heroku - Heroku 无法生成分发要求 -lotly 2.7.0