在Fractal的Transformers中包括数据透视表中的相关表

时间:2018-12-12 11:31:33

标签: laravel thephpleague-fractal

在Laravel项目中,我有4张桌子:

  • 位置
  • 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]上未定义的关系[状态]。

如何使用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
        ]
    ];
}

但是,如果状态允许,我想使用一个变压器。

0 个答案:

没有答案