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
.
我确定这是因为 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)
正如您从错误中看到的那样,查询中引用的 table 是 subcategories
而它应该是 categories
table.
我的问题是如何在此模型中引用正确的 table,因为我的主要类别已经有一个并且工作正常。
要覆盖模型的 table 名称,您可以定义 protected $table
属性。你的情况:
class Subcategory extends Model
{
protected $table = 'categories';
// ..
}
如果您不这样做,Laravel 将从 class 名称派生出 table 名称。在你的情况下:Subcategory => subcategories
.