Prestashop - 当我在adminController中使用$ this-> _select时出错

时间:2016-02-04 12:30:54

标签: mysql sql controller prestashop prestashop-1.6

当我扩展adminController并定义要在$ this-> _select变量中显示的属性时,Prestashop会显示以下错误:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近' a.store_name,a.id_product FROM ps_selstock_product a'在   第3行

      SELECT SQL_CALC_FOUND_ROWS
                  , 
    a.store_name,
    a.id_product          FROM `ps_selstock_product` a


                  WHERE 1 

                  ORDER BY a.`id_selstock_product` ASC LIMIT 0,50

我的$ this-> _select变量包含:

$this->_select = '
        a.store_name,
        a.id_product';

我知道查询应该像这样,删除',':

SELECT SQL_CALC_FOUND_ROWS

    a.store_name,
    a.id_product          FROM `ps_selstock_product` a


                  WHERE 1 

                  ORDER BY a.`id_selstock_product` ASC LIMIT 0,50

但我不知道如何处理,因为查询是由prestashop构建的,我只定义了要显示的属性

3 个答案:

答案 0 :(得分:1)

你试过这个吗?

$this->_select = 'a.store_name,a.id_product';

答案 1 :(得分:1)

第一个问题

首先,您确定store_name存在于Database中吗?默认情况下,Prestashop不提供名为store_name的变量。也许你的商店已经定制,所以你必须调查这种可能性。

我在代码中看到模块使用该代码来获取商店名称:

shop.`name`

所以代码应该是这样的:

$this->_select = 'a.`id_product`, shop.`name` ';

第二个问题

请记住,您一直在覆盖查询,因此可以在代码之后放置一些内容。如果控制器添加了一些变量,则必须在查询末尾添加逗号,。因此,在某些情况下,您必须根据您覆盖的控制器添加它。

$this->_select = 'a.`id_product`, shop.`name` , ';

答案 2 :(得分:0)

如果你设置:

$this->table = 'selstock_product';

Prestashop将查找名为Id_{tablename}的键列,因此,您需要根据prestashop sintax重命名PK字段,即:Id_selstock_product

问候