Предотвратить возврат общих включенных данных во вложенных преобразователях в фрактале Laravel

Я использую фрактал Phpleague с Laravel.

Предположим, у нас есть PackageTransformer как это:

class PackageTransformer extends TransformerAbstract
{
    protected $availableIncludes = [
        'creator'
    ];

    public function transform(Package $package)
    {
        $transforms = [
            'id'         => $package->id,
            'title'      => $package->title,
            'price'      => $package->price,
            'creator'    => $package->creator,
            'created_at' => (string)$package->created_at,
        ];

        return $transforms;
    }

    public function includeCreator(Package $package)
    {
        $user = \App\User::select('user_id', 'username', 'name', 'family')->findOrFail($package->creator);
        return $this->item($user, new UserTransformer, FALSE);
    }

    public function includeProducts(Package $package)
    {
       $products = $package->products()->select('products.product_id','creator')->get();

       return $this->collection($products, new ProductTransformer(), FALSE);
     }

}

В другой руке есть ProductTransformer как это:

class ProductTransformer extends TransformerAbstract
{

    protected $availableIncludes = [
        'creator'
    ];

    public function transform(Product $product)
    {
        $transforms = [
            'product_id'     => $product->product_id,
            'code'           => $product->code,
            'title'          => $product->title,
            'description'    => $product->description,
        ];

        return $transforms;
    }

    public function includeCreator(Product $product)
    {
        $user = \App\User::select('user_id', 'username', 'name', 'family')->findOrFail($product->creator);

        return $this->item($user, new UserTransformer, FALSE);
    }

}

Как вы можете видеть выше, у каждого из них есть свой creator включенные данные. Теперь предположим, что я хочу получить package с включенным creator И его products,

Все работало нормально, но я не хочу возвращаться creator продукты, которые включены в это package и только создатель пакета будет возвращен.

Там в любом случае?

0 ответов

Другие вопросы по тегам