Laravel模型查找旧表名

时间:2015-12-25 10:50:32

标签: php mysql laravel laravel-5

我正在使用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日志)。

除了迁移以及我应该更新此模型的模型之外是否有位置?

4 个答案:

答案 0 :(得分:7)

如果您不想使用默认的table名称("蛇案例",该类的复数名称),您应该指定它到model

protected $table = 'DomainRelatedSettings';

查看Table Names部分的文档。

答案 1 :(得分:1)

您需要使用

在每个Laravel模型中指定表名
protected $table = 'name_of_table';

所以在你的情况下

protected $table = 'DomainRelatedSettings';

答案 2 :(得分:1)

您可以通过在模型上定义表格属性来指定自定义表格:

class theModel extends Model
{
    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'name_of_table';
}

如果它不起作用,请尝试在根文件夹中键入以下命令: composer dump-autoload -o

答案 3 :(得分:0)

如果您在模型中指定了表格的真实名称但仍然存在同样的问题,请尝试:

composer dumpautoload