如何更改 Laravel 模型的表名

2022-08-30 15:50:13

我正在使用Laravel 5,并通过回滚所有迁移,更改特定迁移并再次运行它们,将数据库表的名称从“domain_related_settings”更改为“DomainRelatedSettings”。新的表名将反映在数据库中。

但是当我在这样的语句中使用相应的模型时:DomainRelatedSetting

$domainSettings = DomainRelatedSetting::where('hostname', 'foo')->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` = foo limit 1)

因此,它仍然使用旧的表名。如何确保使用新的表名?


答案 1

如果不想使用默认名称(“snake case”,类的复数名称),则应将其指定为:tablemodel

protected $table = 'DomainRelatedSettings';

请查看表名称部分的文档。


答案 2

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

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

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


推荐