我有两个模型:菜和 DishCategory 。我决定实施"一对多" 关系。 这是 Dish 模型的迁移:
Schema::create('dishes', function (Blueprint $table) {
$table->increments('id');
$table->string('dish', 50);
$table->string('photo');
$table->double('price', 8, 2);
$table->integer('category_id');
$table->integer('type_id'); /* 1 - menu for delivery; 0 - general menu */
});
DishCategory 模型的迁移:
Schema::create('dish_categories', function (Blueprint $table) {
$table->increments('id');
$table->string('category');
});
我在 DishCategory 模型中创建了一个名为dish()
的方法:
public function dish()
{
return $this->hasMany('App\Dish');
}
Dish 模型中的dish_category()
:3
public function dish_category()
{
return $this->belongsTo('App\DishCategory', 'category_id');
}
我尝试在我的关系中设置外键,因此它已在dish_category()
方法中设置为belongsTo()
的第二个参数。但它不起作用。解决方法是什么?
答案 0 :(得分:2)
将dish()
关系定义更改为:
public function dish()
{
return $this->hasMany('App\Dish', 'category_id');
}
dish_category()
已正确定义。
如果您还想添加constraint,请将其添加到dishes
表格迁移中:
Schema::table('dishes', function (Blueprint $table) {
$table->foreign('category_id')->references('id')->on('dish_categories');
});