首页 > 解决方案 > 雄辩的一对多关系在生产服务器上不起作用

问题描述

我知道这已经被问过很多次了,但是我已经在 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 识别这些关系。

标签: laravelforeign-keysrelationship

解决方案


对于任何有类似问题的人,请检查您的表是使用 InnoDB 引擎创建的,而不是 MyISAM 或任何其他引擎。在 laravel 中,您可以在 app/config/database.php 中指定它。只需在 MySQL 配置下将引擎参数更改为“InnoDB”而不是 null。

Laravel 和 InnoDB

这解决了数据库的问题,laravel 方面仍然坏了


推荐阅读