php - 拉维尔 | Eloquent 地填充外国数据

标签 php mysql json laravel eloquent

我有一个数据库,其中包含新闻和新闻类别表。

我的新闻有一个类别 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/

相关文章:

php - 如何在 PHP 中 cURL 到这种类型的 URL [192.168.1.30 :8080/server]?

php - 我只想使用 jquery 向右(水平)滑动而不切换 ul li 元素

mysql - SQL Server 查询到 MySQL 查询的转换

java - Spring Boot 连接到 AWS RDS MySQL - SSLHandshakeException : Received fatal alert: unknown_ca

php - 传递此查询以从表中获取登录名时出现错误

php - Jquery Ajax 请求和 PHP

mysql - 小数据的大型 MySQL 数据库

javascript - 如何确保 WebSocket 消息是 JSON 字符串,防止 JSON.parse 错误?

java - 给定字符串时,JSONArray 无法转换为 JSONObject

java - Google 的 GSON 是否使用构造函数?