【发布时间】:2016-03-31 10:52:57
【问题描述】:
我正在使用 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 日志)。
除了迁移和模型之外,我应该更新这个位置吗?
【问题讨论】:
-
在模型类
protected $table = 'DomainRelatedSettings';上定义表属性后仍然报错? -
不,当我添加这一行时,错误消失了。
-
查看
Table Names部分:laravel.com/docs/5.1/eloquent#defining-models -
我认为我应该在模型中使用单数形式,在表格中使用复数形式。但似乎当我的模型名称为“SomeExample”时。它不仅查找复数版本,还查找“some_example”。谢谢。有时我不明白他们为什么不在(已经非常好的)文档中添加更全面的示例。
标签: php mysql laravel laravel-5