Php Laravel |雄辩地填充外国数据

Php Laravel |雄辩地填充外国数据,php,mysql,json,laravel,eloquent,Php,Mysql,Json,Laravel,Eloquent,我有一个数据库,其中列出了一个新闻和一个新闻类别表 我有一个新闻,它有一个category 1链接到categories表的外键,其中category值等于categories表中的id 我试图创建一个控制器,当作为JSON响应返回结果时,该控制器获取类别名称而不是类别ID 到目前为止,我在一个模型中有这样一个: public function category() { return $this->belongsTo(NewsCategories::class); } 然后我在一

我有一个数据库,其中列出了一个新闻和一个新闻类别表

我有一个新闻,它有一个category 1链接到categories表的外键,其中category值等于categories表中的id

我试图创建一个控制器,当作为JSON响应返回结果时,该控制器获取类别名称而不是类别ID

到目前为止,我在一个模型中有这样一个:

public function category()
{
    return $this->belongsTo(NewsCategories::class);
}
然后我在一个控制器里做这个:

public function index()
{
    $news = new News();
    $news = $news->category()->get();

    return response()->json(['data' => $news], 200);
}
但是返回的JSON响应是空的。我在谷歌上搜索了一些东西,但没有找到任何有用的信息来获取分类表中的标题字段

这就是我得到的回应

{
  data: [ ]
}

第一个问题是,您觉得新的
News
实例具有链接的类别:

$news=news();
这将只产生一个空的模型实例;它还没有数据库表示。尝试通过填充的模型实例获取类别:

$news=news::first();
//或:
$news=news::find(1);
然后重试JSON响应

第二个问题是,通过调用
$news->category()->get()
,您实际上是。如果您只需要访问标题,请尝试
$news->category->title
,它将加载相关的类别记录并为您访问
title
字段



关于您的评论,请继续阅读。

这样一来,它将返回类别ID,而不是前面其他评论中提到的实际标题,
$news=news::With('category')->With('user')->get()
似乎可以工作,有没有其他方法来编写它?这是因为您实际上是通过
$news->category()->get()
来创建关系模型的,而不是通过
$news->category->title
来访问标题。这样做,试图获取none object的属性意味着
$news
实例没有与之关联的类别来访问其
标题
字段。
News::first()->category->title
的输出?