CakePHP состояние пагинации - PullRequest
       3

CakePHP состояние пагинации

1 голос
/ 19 сентября 2019

Я хотел бы найти несколько элементов, скопированных из Excel.Эти скусы разделены пустым пространством.Результат поиска всегда пуст, потому что каждое условие должно быть ИЛИ, а не И.Как изменить условие разбивки на страницы с И на ИЛИ?

Результат запроса

SELECT *, ParentProduct.id FROM parent_products AS ParentProduct WHERE 
ParentProduct.name LIKE '%na301mo%' AND ParentProduct.name LIKE '%gf001bh%' AND 
ParentProduct.name LIKE '%cc302bf%' LIMIT 10

Поиск значений

na301mo gf001bh cc302bf

Контроллер

    if (empty($results)) {
        $this->paginate['conditions'] = $this->ParentProduct->resetConditions($searchStr, 'multi-skus');
        $results = $this->paginate('ParentProduct');
    }

Модель

    public function resetConditions($searchStr, $opt) {
        if ($opt == ‘multi-skus’) {
            $conditions = array();
            $searchStr = preg_replace('!\s+!', ' ', $searchStr);
            $search_terms = explode(' ', $searchStr);
            foreach ($search_terms as $search_term) {
                $conditions[] = array($this->name . '.sku LIKE' => '%' . $search_term . '%');
            }
        } 
    }

Версия.1,3х

Пожалуйста, сообщите.Спасибо

1 Ответ

0 голосов
/ 19 сентября 2019

Вам потребуется изменить цикл foreach внутри вашего resetConditions Medhod Как показано ниже:

            foreach ($search_terms as $search_term) {
                $conditions['OR'][] = array($this->name . '.sku LIKE' => '%' . $search_term . '%');
            }

Это обеспечит разделение всех поисковых терминов на OR вместо AND

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