8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

如何更改 Laravel 模型的表名

Mr. Daniels 2月前

42 0

我正在使用 Laravel 5,并通过回滚所有迁移、更改具体

我正在使用 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、本帖标题:如何更改 Laravel 模型的表名
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Mr. Daniels在本站《database》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我认为我应该在模型中使用单数形式,在表格中使用复数形式。但当我的模型名为“SomeExample”时,它似乎不仅会查找复数版本,还会查找“some_example”。谢谢。有时我不明白为什么他们不在(已经非常好的)文档中添加更全面的例子。

  • 如果你不想使用默认 table 名称( '蛇形命名法',类的复数名称 ),你应该将其指定为 model

    protected $table = 'DomainRelatedSettings';
    

    表名称 的文档

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

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

    如果它不起作用,请尝试在根文件夹中输入此命令:

    composer dump-autoload -o

  • 您需要使用以下方式指定每个 Laravel 模型中的表名

    protected $table = 'name_of_table';
    

    所以在你的情况下

    protected $table = 'DomainRelatedSettings';
    
  • 如果您在模型中指定了表的真实名称但仍然出现相同的问题,请尝试:

    composer dump-autoload
    
返回
作者最近主题: