Как отфильтровать продукт по опции через диапозон чисел?

Есть Ток, нужно отсортировать его от и до, с where все понятно как сделать, а как с msProducts? веть потом еще нужно их вывести. Пробовал вот так:
1)
$where_range1 = "TVtok.value >= 500 AND TVtok.value <= 600";
    $where[] = $where_range1;
2)
$where[] = array("tok:>=" => 500, "AND:tok:<=" => 600);
Выдает ошибку.
Если вводить так
'{"tok:=":500}'
— то это работает. P.S. записи выше делал видом так же как и эта запись, но все равно кидает все не сортируя.
Slava
22 апреля 2020, 12:44
modx.pro
152
0

Комментарии: 9

Slava
22 апреля 2020, 12:46
0
Конечно пытался вариантом
'{"tok:>":500, "AND:tok:<":600}'
Все равно кидает не фильтруя.
    Slava
    22 апреля 2020, 13:17
    0
    'where' => '{"Data.options.tok:=":550}'
    Это тоже не работает
      iWatchYouFromAfar
      22 апреля 2020, 15:00
      0
      {"tok:>":"500","tok:<":"600"}
        Slava
        22 апреля 2020, 15:12
        0
        Это тоже пробовал, в итоге он дает все то что больше 500 и что меньше 600!!!
          iWatchYouFromAfar
          22 апреля 2020, 15:21
          0
          А вам как надо?

          Ну так еще попробуйте
          ["`tok`.`value` BETWEEN 500 and 600"]
            Slava
            22 апреля 2020, 15:29
            0
            Нужно от и до, то есть не меньше 500 допустим и не больше 600, выше запись тоже не работает, в optionFilters там вообще какие-либо sql не работает, а в where не может достать ток
        Slava
        22 апреля 2020, 15:14
        0
        Пробовал через leftjoin вместе с select, тоже не работает.
        &leftJoin=`{
                "msProductOption":{
                    "class":"msProductOption",
                    "on":"msProductOption.value = 'tok'"
                }
            }`
            &select=`{
                "msProduct":"*",
                "msProductOption":"CAST(msProductOption.value AS INT) as tok"
            }`
            &where = `{"tok:=":550}`
          Slava
          22 апреля 2020, 15:47
          0
          Пробовал через такой join
          &leftJoin=`{
                  "msProductOption":{
                      "class":"msProductOption",
                      "on":"`tok`.product_id = Data.id AND `tok`.key = 'tok'"
                  }
              }`
          
              &where = `{"0":["`tok`.`value` BETWEEN 500 and 600"]}`
            Slava
            25 апреля 2020, 11:32
            0
            Как только не пробовал, сделал обходным путем
            {"tok:IN":[500,600]}
            и просто потом через range добавил еще туда чисел. P.S BETWEEN не работает.
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              9