如何加载与 { json:api } 客户端的关系?
How to load relations with { json:api } Client?
我正在使用 {json:api} Client 将 json 解析为 Eloquent 模型。
我有两个模型,Congress
和 Speaker
。一个Congress
有很多Speaker
.
这是我能够做到的:
$repository = app(App\Repositories\CongressRepository::class);
$document = $repository->all();
$document
是具有以下属性的 CollectionDocument
:
我想得到第一个Congress
的speakers
。这是我试过的
$congresses = $document->getData();
$congress = $congresses->first();
$congress->speakers // <- this is null!
为什么 $congress->speakers
为空?我也试过给我们$repository->all(['includes' => 'speakers']);
但这没有区别。
似乎 $congress->speakers
为空,因为关系为空:
我用this package to create the json
output. Inside the Schema.php
I had to add self::DATA
to make the data visible, as explained in the docs.
public function getRelationships($resource, $isPrimary, array $includeRelationships)
{
return [
'speakers' => [
self::SHOW_SELF => true,
self::SHOW_RELATED => true,
self::DATA => function () use ($resource) {
return $resource->speakers;
},
],
];
}
我仍然想知道是否可以加载关系,如果 API
中只给出 link
。
我正在使用 {json:api} Client 将 json 解析为 Eloquent 模型。
我有两个模型,Congress
和 Speaker
。一个Congress
有很多Speaker
.
这是我能够做到的:
$repository = app(App\Repositories\CongressRepository::class);
$document = $repository->all();
$document
是具有以下属性的 CollectionDocument
:
我想得到第一个Congress
的speakers
。这是我试过的
$congresses = $document->getData();
$congress = $congresses->first();
$congress->speakers // <- this is null!
为什么 $congress->speakers
为空?我也试过给我们$repository->all(['includes' => 'speakers']);
但这没有区别。
似乎 $congress->speakers
为空,因为关系为空:
我用this package to create the json
output. Inside the Schema.php
I had to add self::DATA
to make the data visible, as explained in the docs.
public function getRelationships($resource, $isPrimary, array $includeRelationships)
{
return [
'speakers' => [
self::SHOW_SELF => true,
self::SHOW_RELATED => true,
self::DATA => function () use ($resource) {
return $resource->speakers;
},
],
];
}
我仍然想知道是否可以加载关系,如果 API
中只给出 link
。