Предотвратить возврат общих включенных данных во вложенных преобразователях в фрактале 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
и только создатель пакета будет возвращен.
Там в любом случае?