在模型中实现关系

时间:2018-02-05 09:42:20

标签: php laravel laravel-5

我有两个模型: 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()的第二个参数。但它不起作用。解决方法是什么?

1 个答案:

答案 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');
});