我确信这是因为 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/