Я использую CakePHP для поиска связанных моделей
$this->Order->find('first',
array(
'conditions'=>$conditions,
'contain' =>
array(
'OrderItem'=>array(
'Item'=>
array(
'order' => array('Item.item_number ASC')
)
),
'Location','Campaign', "Customer")
)
);
Я использую это для создания счета и хотел бы отсортировать элементы по номеру элемента.
Но по какой-то причине сортировка не работает.
Есть идеи?
Сгенерированный SQL очень длинный. но вы можете увидеть проблему из этого фрагмента, что order by
находится в неправильном запросе - то есть в элементе, который выбирается по id - только один элемент. (И есть отдельный запрос для каждого элемента в заказе.)
SELECT `OrderItem`.`order_id`, `OrderItem`.`item_id`,
`OrderItem`.`quantity`, `OrderItem`.`id` FROM `order_items` AS `OrderItem` WHERE
`OrderItem`.`order_id` = (3144)
И
SELECT `Item`.`id`, `Item`.`campaign_id`, `Item`.`item_number`, `Item`.`description`,
`Item`.`order_unit`, `Item`.`order_price`, `Item`.`maxQuantity`, `Item`.`sale_unit`,
`Item`.`sale_price`, `Item`.`approx`, `Item`.`min_weight`, `Item`.`max_weight`,
`Item`.`avail`, `Item`.`filename` FROM `items` AS `Item` WHERE `Item`.`id` = 122
ORDER BY `Item`.`item_number` ASC
Я хотел бы видеть, что первый запрос выполняет inner join Items.id on OrderItem.item_id
и упорядочивает этот запрос по номеру элемента, но я вижу, что containable
генерирует отдельные запросы для каждой связанной модели.