laravel - 在 Fractal 的 Transformers 中包含来自数据透视表的相关表
问题描述
在我的 Laravel 项目中,我有 4 个表:
- 地点
- location_product
- 产品
- 地位
location_product 是 location 和 product 之间的中间表,它有一个status
指向该product_status
表的外键。
我正在使用 Fractal 的转换器来转换我的模型:
//Filter the products
$products = $location->products()->unarchived()->get();
return $this->response()->collection($products, new ProductDetailsTransformer());
在我的ProductDetailsTransformer.php中,我想使用 '''defaultIncludes''' 包含来自中间表的状态:
/**
* List of resources to automatically include
*/
protected $defaultIncludes = [
'status',
];
public function includeStatus(Product $product) {
return $this->item($product->pivot->status, new ProductStatusTransformer());
}
但我收到一个
调用模型 [App\Models\Product] 上的未定义关系 [status]。
如何使用 Fractal 的转换器正确包含状态表?
目前,我正在使用以下内容:
public function transform(Product $product) {
return [
'id' => (int)$product->id,
'name' => $product->name,
'amount' => $product->pivot->amount,
'delivery_on_site' => (bool)$product->pivot->delivery_on_site,
'status' => [
'id' => $product->pivot->status->id,
'name' => $product->pivot->status->name
]
];
}
但如果状态可能的话,我想使用变压器。
解决方案
推荐阅读
- javascript - Autofill extension that fills form without form tags
- django - 异常类型:DoesNotExist | 配置文件匹配查询不存在
- javascript - 有没有办法让firebase触发器在更新多个子集合时触发?
- stata - Null hypothesis testing
- jquery - Error Internal Server Error blueimp jquery file upload
- ffmpeg - 在 discord.py 中使用 ffmpeg 库时出现 OpusError
- android - WebService 请求从 Android 代码转码到 Swift 代码
- xamarin - Xamarin 缺少指令
- javascript - Discord.js 克隆类别中的特定语音通道,“X”次
- compilation - 使用 javassist 创建一个类并从代码中加载