我确信这是因为雄辩,但查询在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
表。
我的问题是如何在这个模型中引用正确的表格,因为我已经有一个用于我的主要类别,并且工作得很好。
答案 0 :(得分:2)
要覆盖模型的表名,您可以定义protected $table
属性。在你的情况下:
class Subcategory extends Model
{
protected $table = 'categories';
// ..
}
如果你不这样做,Laravel将从类名中派生出表名。在您的情况下:Subcategory => subcategories
。