Как сделать запрос, сравнивая значения с плавающей точкой на cakephp 3.x? - PullRequest
0 голосов
/ 18 июня 2019

Я новичок в cakephp, и я пытаюсь создать область поиска, чтобы перечислить некоторые продукты, цены на которые превышают значение, или ниже значения, и разбить их на страницы.

Но когдаЯ пытаюсь сделать это, результат полностью отличается от того, что я ожидал.Пытаясь понять, почему это происходит, я обнаружил, что мой запрос обрабатывает значение как тип String вместо Float, и он портит результаты.

Независимо от того, что я пытаюсьтип значения не изменяется, как мне сделать, чтобы изменить тип значения в запросе cakePHP?

// the price value that comes from the input is formatted like this: '1.000,00'

$productsModel = $this->loadModel('Products');

$this->paginate = [
    'contain' => [
       'Archives', 'Categories', 'Favorites'
    ],
    'conditions' => [
        //here I've tried to do some conversions manually
        'Products.price >=' => floatVal(str_replace(",", ".", str_replace(".", "", $data['lower_price']))),
        'Products.price <=' => floatVal(str_replace(",", ".", str_replace(".", "", $data['greater_price']))
    ],
    'limit' => 16
];
$products = $this->paginate($productsModel);

$this->set(compact('products'));

Я ожидал, что запрос был сгенерирован так:

SELECT * FROM products WHERE price >= 29.90;

Но у меня есть это вместо:

SELECT * FROM products WHERE price >= '29.90';
...