在我的 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
]
];
}
但如果状态可能的话,我想使用变压器。