Php Laravel |雄辩地填充外国数据
我有一个数据库,其中列出了一个新闻和一个新闻类别表 我有一个新闻,它有一个category 1链接到categories表的外键,其中category值等于categories表中的id 我试图创建一个控制器,当作为JSON响应返回结果时,该控制器获取类别名称而不是类别ID 到目前为止,我在一个模型中有这样一个: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); } 然后我在一
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
的输出?