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

时间:2017-03-01 15:37:40

标签: mysql laravel-5 model laravel-eloquent

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

这是我的模特:

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)

从错误中可以看出,查询中引用的表是subcategories时应该是categories表。

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

1 个答案:

答案 0 :(得分:2)

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

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

    // ..
}

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