Laravel 模型在查询中引用了错误的 table

Laravel model referencing wrong table in query

我确定这是因为 eloquent,但查询在 SELECT.

中使用了错误的 table

这是我的模型:

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

这是我的控制器:

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)

正如您从错误中看到的那样,查询中引用的 table 是 subcategories 而它应该是 categories table.

我的问题是如何在此模型中引用正确的 table,因为我的主要类别已经有一个并且工作正常。

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

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

    // ..
}

如果您不这样做,Laravel 将从 class 名称派生出 table 名称。在你的情况下:Subcategory => subcategories.