mysql - Laravel 模型在查询中引用错误的表

标签 mysql laravel-5 model eloquent

我确信这是因为 Eloquent ,但查询在 SELECT 中使用了错误的表。

这是我的模型:

class Subcategory extends Model
{
    public function subcategory()
    {
        return $this->belongsTo(Category::class);
    }
}

这是我的 Controller :

class SubcategoriesController extends Controller
{
    public function index()
    {

        $subcategories = Subcategory::all();

        return view('pages.subcategories', compact('subcategories'));

    }
}

最后是我的错误:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'developmnet.site.subcategories' doesn't exist (SQL: select * from `subcategories` where `category_slug` = budgets limit 1)

正如您从错误中看到的,查询中引用的表是子类别,而它应该是类别表。

我的问题是如何在这个模型中引用正确的表格,因为我已经有一个用于我的主要类别的表格,并且它工作得很好。

最佳答案

要覆盖模型的表名称,您可以定义 protected $table 属性。对于您的情况:

class Subcategory extends Model
{
    protected $table = 'categories';

    // ..
}

如果你不这样做,Laravel 将从类名中派生出表名。在您的情况下:Subcategory => subcategories

关于mysql - Laravel 模型在查询中引用错误的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42535922/

相关文章:

python - 为什么在我创建新用户时 Django 用户密码没有加密?

Laravel 仅检索属于经过身份验证的用户的模型记录

mysql - mysql中整列的条目相乘

mysql - 检查记录是否存在使用mysql删除它

mysql - 使用 order 选项时 Sequelize 生成不起作用的 SQL

php - 我可以从 JSON 动态创建 mySQL 表吗?

mysql - 如何在 Laravel 中获取相似的产品标签?

php - 使用 Laravel 5.4 从 SSRS 获取报告

php - Laravel mysql 连接问题

model - 当有多个输出时,如何仅在一个输出上训练网络?