我有一个数据库,其中包含新闻和新闻类别表。
我的新闻有一个类别 1,它链接到类别表的外键,其中类别值等于类别表中的 id。
我正在尝试创建一个 Controller ,在将结果作为 JSON 响应返回时获取类别名称而不是类别 ID。
到目前为止,我在模型中有这个:
public function category()
{
return $this->belongsTo(NewsCategories::class);
}
然后我在 Controller 内部执行此操作:
public function index()
{
$news = new News();
$news = $news->category()->get();
return response()->json(['data' => $news], 200);
}
但是返回的 JSON 响应是空的。我已经用谷歌搜索了一些东西,但还没有真正找到任何关于获取类别表中标题的外部字段的有用信息。
这是我得到的回复
{
data: [ ]
}
最佳答案
第一个问题是,您认为新的 News
实例具有链接的类别:
$news = new News();
这只会产生一个空的模型实例;它还没有数据库表示。尝试通过填充的模型实例获取类别:
$news = News::first();
// Or:
$news = News::find(1);
并重试 JSON 响应。
第二个问题是,通过调用 $news->category()->get()
你实际上是 querying the relation 。如果您只需要访问标题,请尝试 $news->category->title
,它将加载关联的类别记录并为您访问 title
字段。
关于您的评论,请阅读eager/lazy loading .
关于php - 拉维尔 | Eloquent 地填充外国数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46247924/