ФорумПрограммированиеPHP для идиотов → CakePHP paginate...

CakePHP paginate...

  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 27 июня 2012 г. 9:49

    …нихуя не пашет >_<

    Нахожусь в категории с отображением товаров…

    основные настройки пагинатора:
    var $paginate = array(
    'Product' => array(
    'limit' => 10,
    'order' => array(
    'Product.instock' => 'desc',
    'Product.title' => 'asc',
    ),
    )
    );


    дальше функия вывода:
    function index($id = 0) {



    $conditions = array('Product.category_id' => $id); // берем продукты из этой категории



    // тут обработка сортировки и фильтра, вроде все нром



    $this->paginate['Product']['conditions'] = $conditions; // в conditions нахерачили сортировку

    $this->paginate['Product']['contain']['ProductsProperty']['conditions']['OR'] = $contain_conditions; // сюда впихнул фильтр по свойствам товара

    $products = $this->paginate('Product'); // а вот тут начинается пиздец

    во-первых, вот так $this->paginate() не пашет, ну я думаю, из-за того, что мы внутри категории.
    во-вторых, фильтр убивает не товар, не подошедший по параметрам, а только его свойства, то есть до фильтра структура такая:
    Array
    (
    [0] => Array
    (
    [Product] => Array
    (
    [id] => 42

    )

    [ProductsProperty] => Array
    (
    [0] => Array
    (
    [id] => 27

    )
    )
    )

    [1] => Array
    (
    [Product] => Array ( … )
    [ProductsProperty] => Array ( … )

    а после фильтра все теже товары, но:
    Array
    (
    [0] => Array
    (
    [Product] => Array
    (
    [id] => 42

    )

    [ProductsProperty] => Array
    (
    )
    )

    [1] => Array
    (
    [Product] => Array ( … )
    [ProductsProperty] => Array ()

    кароч, свойства "отфильтрованных" товаров пустые, а сами товары на месте -_-

    вот так выглядит $this->paginate с фильтром:
    Array
    (
    [Product] => Array
    (
    [limit] => 12
    [order] => Array
    (
    [Product.instock] => desc
    [Product.title] => asc
    )

    [conditions] => Array
    (
    [Product.category_id] => 1
    )

    [contain] => Array
    (
    [ProductsProperty] => Array
    (
    [conditions] => Array
    (
    [OR] => Array
    (
    [1] => Array
    (
    [property_id] => 1
    [value] => газовый
    )

    [3] => Array
    (
    [property_id] => 3
    [value BETWEEN ? AND ?] => Array
    (
    [0] => 1
    [1] => 2
    )

    )

    )

    )

    )

    )

    )

    )



    если ниче не понятно, вот тут код функции (закомментил, что не относится к делу).
    единственный спец по кейку, которого я знаю, занят каким-то переездом в общаге -_-
    в документации и на форумах у всех все ахуенно, что уебать их хочется))
    Спустя 143 сек.
    пробовал писать в ручную запрос, все круто и замечательно, но как его всухую въебать в пагиней, не знаю…
    Высокоуровневое абстрактное говно
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 27 июня 2012 г. 14:17, спустя 4 часа 28 минут 35 секунд

    если не знаешь, как в пагинацию, советую выбрать все ProductsProperty а ля
    $ids = $this->Product->ProductsProperty->find('list', array('fields' => array('product_id'), 'conditions' => array(…));

    ну и далее

    $this->paginate['Product']['conditions'] = array('Product.category_id' => 1, 'Product.id' => $ids);

    как-то так, идею ты понял, разбей на два запроса, здесь оно не нужно, не себе делаешь)
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 27 июня 2012 г. 15:43, спустя 1 час 26 минут

    ага, спасибо))
    вроде ты это ночью говорил, но я нихера не понимал, вырубался уже))
    Высокоуровневое абстрактное говно
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz 27 июня 2012 г. 19:37, спустя 3 часа 53 минуты 21 секунду

    вроде ты это ночью говорил, но я нихера не понимал

    Хм… окай…
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 27 июня 2012 г. 20:10, спустя 33 минуты 21 секунду

    и к чему это бессмысленное сообщение?
    Высокоуровневое абстрактное говно

Пожалуйста, авторизуйтесь, чтобы написать комментарий!