Skip to content

Баг множественного выбора в одном атрибуте #8

@Serega67

Description

@Serega67

Доброе утро!

Работаю с движком Eximus. И недавно исправлял баг Множественного выбора. Вот описание исправленного бага из трекера багов и задач Eximus'а:

После выбора множественных атрибутов, движок ищет все товары по критерию. Однако, в расширении EEavBehavior было немного другое трактование условия множественного выбора. Если пришел массив со значениями для одного атрибута, то EEavBehavior делал составной JOIN, в котором по всем значениям из массива делал склейку - т.е. это даже не точное соответствие товара всем значениям при перечислении через AND, а сложный запрос с пропорциональным количеством JOIN'ов, в каждом из которых идет проверка на соответствие.

Решение: если в EEavBehavior приходит массив со значениям для атрибута, то сделал проверку на вхождение в массив через IN.

Вот изменение в функции protected function getFindByEavAttributesCriteria($attributes){:

Было:

    foreach ($values as $value) {
        $value = $conn->quoteValue($value);
        $criteria->join .= "\nJOIN {$this->tableName} eavb$i"
            .  "\nON t.{$pk} = eavb$i.{$this->entityField}"
            .  "\nAND eavb$i.{$this->attributeField} = $attribute"
            .  "\nAND eavb$i.{$this->valueField} = $value";
            $i++;
    }

Стало:
    $valueTmpArr = array();
    foreach ($values as $value) {
        $valueTmpArr[] = $conn->quoteValue($value);               
    }

    $valueInCondition = implode(',',$valueTmpArr);

    $criteria->join .= "\nJOIN {$this->tableName} eavb$i"
        .  "\nON t.{$pk} = eavb$i.{$this->entityField}"
        .  "\nAND eavb$i.{$this->attributeField} = $attribute"
        .  "\nAND eavb$i.{$this->valueField} IN ($valueInCondition)";

    $i++;   


Правильно ли я понял, что именно здесь нужно было исправить и что здесь планировался такой критерий? :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions