未找到列:1054 'field list' 中的未知列

Column not found: 1054 Unknown column in 'field list'

我不知道为什么我一直看到以下错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'ec_svdiscount_services.sv_discount_id' in 'field list'

我已经编辑了我的数据库并清除了所有缓存:

php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
php artisan clear-compiled
composer dumpautoload

全部试图删除 sv_discount_id 的所有记录,这些记录在我的项目中已不再使用。我应该有 svdiscount_id 我在控制器、模型、存储库和所有相关的东西中创建的。请问我做错了什么?我怎样才能阻止 sv_discount_id 出现。

当您的模型名称在关系中使用时 SvDiscount::class,laravel 将从 class 名称中推断出外键。

例如:

Class product 
{
    public function discount()
    {
        return $this->belongsTo(SvDiscount::class);
    }
}

在代码中使用此关系时,laravel 将推断 products table 中存在的外键被命名为 sv_discount_id.

一个简单的解决方案是将这些字段重命名为 sv_discount_id

另一个解决方案是在关系 (documentation):

中指定外键
Class product 
{
    public function discount()
    {
        return $this->belongsTo(SvDiscount::class, 'svdiscount_id');
    }
}