Cakephp сдерживаемый порядок не работает - PullRequest
1 голос
/ 25 сентября 2011

Я использую 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 генерирует отдельные запросы для каждой связанной модели.

Ответы [ 2 ]

1 голос
/ 25 сентября 2011

Убедитесь, что вы добавили:

var $actsAs = array('Containable');

к модели или

$this->Order->Behaviors->attach('Containable');

к действию. Из вашего поста не ясно, есть ли у вас это уже.

Также вы должны уточнить isn't working - а что нет? Неожиданные результаты? вообще ничего?

0 голосов
/ 26 сентября 2011

Вместо этого вы можете попробовать Linkable:

https://github.com/Terr/linkable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...