【发布时间】:2021-07-02 04:34:13
【问题描述】:
我有一个车辆数据库,与我的变体和国家/地区表有多对多关系。我只想显示我的数据透视表 (countries_variants) 中的标题。但是当我在我的 api 资源文件中设置关系时,它会显示变量、国家变量和国家表中的所有列。有没有办法只从数据透视表中获取标题?
这是我的变体模型:
public function countries(): BelongsToMany
{
return $this->belongsToMany(Country::class, 'countries_variants')->withPivot('title');
}
VariantResource.php
public function toArray($request)
{
return [
'title' => $this->countries->first->title,
];
}
VariantController.php
public function index()
{
return new VariantCollection(Variant::paginate(50));
}
我得到的输出是:
{
"data": [
{
"title": {
"id": 1,
"title": "Nederland",
"country_code": "NL",
"language_code": "NL_nl",
"pivot": {
"variant_id": 1,
"country_id": 1,
"title": "3/5 deurs"
}
}
}
]
}
我只想显示"title": "3/5 deurs" 而不是其他数据。
我认为如果我在模型中设置 withPivot('title'),它只会显示该标题而不显示外键(variant_id 和 country_id)。显然是想错了..
我也试过添加这个:
'variant_title' => $this->whenPivotLoaded('countries_variants', function () {
return $this->pivot->title;
}),
但是数据然后返回空。
任何帮助将不胜感激:)
【问题讨论】:
标签: laravel api eloquent many-to-many