0

我是 cakephp 的新手,我正在尝试做一个搜索区域来列出一些价格大于或低于某个值的产品,并对其进行分页。

但是当我尝试这样做时,结果与我的预期完全不同。当试图了解为什么会发生这种情况时,我发现我的查询将值视为字符串类型而不是浮点数,并且它弄乱了结果。

无论我尝试什么,值的类型都不会改变,我该如何改变 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';
4

0 回答 0