Laravel关系不起作用。关系方法未调用

时间:2019-06-15 14:37:53

标签: php laravel eloquent

我正在尝试制作REST API。我有以下数据库表

products:
id, title, cat_id

cats:
id, name

产品型号:

public function cat(){
   return $this->hasOne('App\Cat');
}

猫模型

public function products(){
  return $this->hasMany('App\Product');
}

当我尝试访问产品时,返回以下内容:

{"id": 1,
"title": "Example",
"cat_id": 1}

我希望这样

{"id": 1,
"title": "Example",
"cat": {
       "id": 1,
        "name": "Ex"
      }
}

我在这里做错了什么。请帮助

2 个答案:

答案 0 :(得分:2)

HasOne在这里不是正确的关系。 HasMany的倒数是BelongsTo

class Product extends Model
{
    public function cat()
    {
       return $this->belongsTo('App\Cat');
    }
}

答案 1 :(得分:1)

正如文森特(Vincent)所述,您可能想在加载产品模型时急于加载Cat模型。在Laravel文档中here描述了热切的加载。因此运行

Product::find($id)->with('cat')->get();

将为给定的$id加载产品,并自动查询Cat关系。