我正在使用laravel 5,并将表的名称从“domain_related_settings”更改为“DomainRelatedSettings”。

为此,我回滚了所有迁移,更改了特定的迁移,然后再次运行它们。在phpmyadmin中,我看到了新的表名。

当我使用相应的模型(DomainRelatedSetting.php)作为类“DomainRelatedSetting”时

$domainSettings = App\DomainRelatedSetting::where('hostname', 'localhost')->first();

它给出以下错误:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'databasename.domain_related_settings' doesn't exist (SQL: select * from `domain_related_settings` where `hostname` = localhost limit 1)

看起来好像是domain_related_settings。那是我的旧表名,我将其更改为DomainRelatedSetting。

当我在类中定义新表时,它将起作用。
protected $table = 'DomainRelatedSettings';

我在导致错误的中间件中使用以下功能:
$ domainSettings = App\DomainRelatedSetting::where('hostname','localhost')-> first();

我搜索了项目中的字符串(使用phpstorm),结果为0(laravel日志除外)。

除了迁移和模型之外,还有没有其他应更新的位置?

最佳答案

如果您不想使用默认的table名称(“蛇格”,即类的复数名称),则应将其指定为model:

protected $table = 'DomainRelatedSettings';

查看 Table Names 部分中的文档。

关于php - Laravel模型寻找旧表名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34462190/

10-11 01:25