我有一个查询,其中在addFieldToFilter中使用CHAR_LENGTH,如下所示

 $quotes_count =  Mage::getModel('sales/quote')->getCollection()

    ->addFieldToFilter('part_quote_id', array("like" => $part_quote_id . "%"))
    ->addFieldToFilter('CHAR_LENGTH(part_quote_id)', '12')
    ->getSize();


我收到以下错误“报价保存错误:SQLSTATE [42S22]:找不到列:1054” where子句”中的未知列'CHAR_LENGTH(part_quote_id)'

这是在应用补丁6788之后的。我知道有一个用于SQL注入的修复程序,但是找不到如何替换它

最佳答案

好吧..我自己得到了答案。

$quotes_count = Mage::getModel('sales/quote')->getCollection()
      ->addFieldToFilter('part_quote_id', array("like" => $part_quote_id . "%"));
    // ->addFieldToFilter('CHAR_LENGTH(part_quote_id)', '12')
    // ->getSize();
$quotes_count->getSelect()->where("CHAR_LENGTH(part_quote_id) = 12");
$quotes_count = $quotes_count->getSize();


为我做到了!

10-07 20:20