【问题标题】:Laravel Backpack - Eloquent trying to insert data in a wrong column name after database column renameLaravel Backpack - Eloquent 试图在数据库列重命名后在错误的列名中插入数据
【发布时间】:2019-07-22 11:27:30
【问题描述】:

重命名数据库列名后,我遇到了通过 eloquent 保存数据的问题。

在迁移过程中更改了列名。迁移已执行,现在数据库中的名称正常。

在模型中,列名也更改为新名称。 但是由于某种原因,当我尝试将新记录插入数据库时​​,Laravel 抱怨列名,它试图使用旧名称而不是新名称。

我目前使用 PHP 7 和 Laravel 5.8 和 Postgres 作为数据库。我的环境是在docker上运行的。

我已经尝试清除缓存,但没有解决我的问题。 Composer dump-autoload 也执行了,但没有任何改变。

这是错误:

Illuminate \ Database \ QueryException (42703)
SQLSTATE[42703]: Undefined column: 7 ERROR: column "name" does not exist LINE 1

重要的是说我正在使用 Laravel Backpack。

【问题讨论】:

  • 请在插入新记录的位置显示您的代码。
  • 虽然您已使用新列名更新了模型,但您的代码仍有可能包含对旧列的查询。我建议在您的模型中使用 constants。这样,您可以在执行查询时引用这些常量,而不必担心实际的列名。

标签: php laravel postgresql laravel-5 laravel-backpack


【解决方案1】:

有时可能是由于缓存问题,因此最好在对迁移或 env 文件进行一些更改后运行以下五个命令,并且 Laravel 无法按预期工作。这是完整的解释: https://www.youtube.com/watch?v=Q1ynDMC8UGg

php artisan config:clear
php artisan cache:clear
composer dump-autoload
php artisan view:clear
php artisan route:clear

请尝试这些,看看之后是否有效。

【讨论】:

  • 这就是解决方案。但为了工作,必须在 docker 容器内运行这些命令。
  • 通常从项目根目录中的命令行对我来说效果很好。无论如何,我很高兴它对你有用
【解决方案2】:

请更新您的模型,并尝试使用流利的查询进行测试,例如:

DB::table('users')->insert(array('name'=>'xyz'));

【讨论】:

    猜你喜欢
    • 2012-06-21
    • 2023-03-26
    • 2019-08-19
    • 2011-03-01
    • 2018-09-01
    • 1970-01-01
    • 2021-01-17
    • 2017-07-23
    • 1970-01-01
    相关资源
    最近更新 更多