Prestashop - 列表视图过滤器

时间:2015-02-09 10:11:11

标签: mysql where alias prestashop clause

我在我的模块的列表视图中插入了另一列,用getList函数插入值,我修改了sql以在renderList函数中过滤但我不能在where子句中使用别名。

我该如何解决?

我得到的错误是下一个:

Uncaught Unknown column 'product_supplier_name' in 'where clause'<br /><br />
 SELECT SQL_CALC_FOUND_ROWS a.* , s.name AS product_supplier_name FROM ps_supplier_bill a LEFT JOIN ps_supplier s ON s.id_supplier = a.id_product_supplier WHERE 1 AND product_supplier_name LIKE '%fa%' ORDER BY product_supplier_name asc LIMIT 0,50

1 个答案:

答案 0 :(得分:0)

正确的查询应该是:

SELECT SQL_CALC_FOUND_ROWS a.* , s.`name` AS product_supplier_name FROM `ps_supplier_bill` a LEFT JOIN `ps_supplier` s ON s.`id_supplier` = a.`id_product_supplier` WHERE 1 AND s.`name` LIKE '%fa%' ORDER BY s.`name` asc LIMIT 0,50

不可能在WHERE中直接使用别名,因为按时间顺序,WHERE发生在SELECT之前,它总是执行链中的最后一步。 REFER

来自MySQL doc:

  

标准SQL不允许在WHERE子句中引用列别名。强制执行此限制是因为在评估WHERE子句时,可能尚未确定列值。

MySQL doc