在Laravel项目中,我有4张桌子:
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]上未定义的关系[状态]。
如何使用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
]
];
}
但是,如果状态允许,我想使用一个变压器。