Мне нужен пример работы с вложенными моделями.
Предположим, у нас есть несколько приложений и моделей для управления заказами: Order, Position, Item.
Order может содержать позиции иПозиции могут содержать элементы.
Вопрос заключается в следующем: как обрабатывать выбор данных?
В некоторых случаях необходимо:
- Получить список заказов с позициями иПредметы (как в моем примере кода)
- Получить только список ордеров (без позиций и предметов)
- Получить некоторую статистику, например, общее количество всех предметов в одной позиции
Я могу сделать что-то подобное:
class Order_Mapper
{
public function getOrders($criteria)
{
$orders = array(); // Get order list from DB
foreach($orders as $order)
{
$positions = Position_Mapper::getPositionsByOrderId($order->id);
foreach($positions as $position)
{
$order->addPosition($position);
}
}
return $orders;
}
}
class Position_Mapper
{
public function getPositionsByOrderId($order_id)
{
$positions = array(); // Get position list from DB
foreach($positions as $position)
{
$items = Item_Mapper::getItemsByPositionId($position->id);
foreach($items as $item)
{
$position->addItem($item);
}
}
return $positions;
}
}
... но это неэффективно, потому что нужно много SQL-запросов, один для выбора ордера, затем один для каждого ордера, чтобы получить позиции изатем по одному на каждую Позицию, чтобы получить Предметы.
Я довольно неопытен в MVC, поэтому любая помощь приветствуется!
В ответ на Доктрину - я действительно не хотел учитьсяновый набор ORM, ни я не надеваюне против написания SQL-запросов вручную.Мне просто нужна идея, как выполнять вышеупомянутые задачи.
Здесь - моя вторая попытка выполнить все упомянутые выше варианты использования без дополнительных затрат.Пожалуйста, посмотрите и расскажите мне свои мысли.Код очень прост.