В моем проекте Laravel у меня есть 4 таблицы:
- location
- location_product
- product
- status
location_product - это промежуточная таблица между местоположением и продуктом, имеющая внешний ключ status
, указывающий на таблицу product_status
.
Я использую преобразователи Fractal для преобразования моих моделей:
//Filter the products
$products = $location->products()->unarchived()->get();
return $this->response()->collection($products, new ProductDetailsTransformer());
и в моем ProductDetailsTransformer.php я хочу включить статус из промежуточной таблицы, используя '' 'defaultInclude' '':
/**
* List of resources to automatically include
*/
protected $defaultIncludes = [
'status',
];
public function includeStatus(Product $product) {
return $this->item($product->pivot->status, new ProductStatusTransformer());
}
, но я получаю
Вызов неопределенного отношения [status] для модели [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
]
];
}
Но я бы хотел использовать Трансформатор, если это возможно для статуса.