Для создания заказа есть такой класс данных:
class OrderData extends Data
{
public function __construct(
#[Min(2)]
public string $fio,
#[Rule(['phone:ru'])]
public string $phone,
#[DateFormat('Y-m-d')]
public string $date,
#[DateFormat('H:i')]
public string $time_from,
#[DateFormat('H:i')]
public string $time_to,
#[Min(5)]
public string $address,
public OrderCommunicationEnum $communication,
//... etc
)
{
}
}
Внедряю его в контроллер, чтобы создать заказ:
class OrderController extends Controller
{
public function store(OrderData $data): void
{
Order::query()->create($data->toArray());
}
}
Всё хорошо, но в заказе ещё есть товары, которые я передаю в формате массива [ID товара => количество].
Как можно создать класс ProductData, чтобы внедрить его в OrderData как зависимость, по аналогии с $fio, OrderCommunicationEnum и прочими параметрами?
Сейчас пока сделал так:
class OrderController extends Controller
{
public function store(OrderData $data, Request $request): void
{
$order = Order::query()->create($data->toArray());
$order->products()->sync($request->input('products'));
}
}