首页 文章

zen cart SQL - 选择产品并按价格订购

提问于
浏览
1

SOLVED

请参阅下面的答案 .

BACKGROUND

任何熟悉zen cart的人都会知道它配备了世界上最无意义的产品排序选项,即alpha下拉分拣机 .

基本上它的作用是允许您通过它们开头的字母/数字来选择产品 . 好吧,当我购物时,项目的起始字母很少是一个有用的标准,所以我正在尝试创建一个更有用的产品分类器,它将对添加的日期,价格和产品名称进行排序 . 然后根据属性类别进行过滤 .

PROBLEM

所以我设法强迫分拣机做我自己的查询,这是除了价格之外的所有事情 .

这是我目前设置的价格下拉产生的SQL:

SELECT DISTINCT p.products_id, p.products_type, p.master_categories_id
               ,p.manufacturers_id, p.products_price, p.products_tax_class_id
               ,pd.products_description
               ,IF(s.status = 1, s.specials_new_products_price, NULL)
                  AS specials_new_products_price
               ,IF(s.status =1, s.specials_new_products_price, p.products_price)
                  AS final_price
               ,p.products_sort_order
               ,p.product_is_call
               ,p.product_is_always_free_shipping
               ,p.products_qty_box_status

  FROM products p
  LEFT JOIN specials s on p.products_id = s.products_id
  LEFT JOIN products_description pd on p.products_id = pd.products_id
  JOIN products_to_categories p2c on p.products_id = p2c.products_id

  WHERE p.products_status = 1
    and pd.language_id = '1'
    and p2c.categories_id = '1'

  GROUP BY p.products_id
  ORDER BY final_price ASC

正如您所看到的,我正在尝试根据最终价格进行排序,最终价格是正常价格或特殊价格(如果设置)的别名 . 这通过phpmyadmin工作正常 . 不幸的是,这不通过zen购物车,我收到PHP错误:

PHP致命错误:1054:'order子句'中的未知列'final_price':: SELECT p.products_id,p.products_price_sorter,p.master_categories_id,p.manufacturers_id FROM products p LEFT JOIN specials s on p.products_id = s.products_id LEFT JOIN products_description pd on p.products_id = pd.products_id JOIN products_to_categories p2c on p.products_id = p2c.products_id WHERE p.products_status = 1 \ r \ n和pd.language_id ='1'\ r \ n和p2c.categories_id = '1'GROUP BY p.products_id在101行/var/www/includes/classes/db/mysql/query_factory.php中的final_price ASC订购

所以我查看了第101行,它引用了数据库抽象类中的错误处理方法 . 有没有人有任何想法在这里出了什么问题以及如何解决它?

2 回答

  • 0

    'final_price'实际上不是数据库中的字段;它是购物车对象中每个订单项条目的一部分 . 您可以使用数据库按基准价格(也不是按属性定价且没有其他定价属性的产品的最终价格)进行排序 .

  • 1

    感谢所有看过这个的人 . 我设法解决了这个问题 . 不知道为什么,但我从错误消息中注意到别名没有通过db抽象类 . 但是,它正在 生产环境 p.products_price_sorter . 所以我设法使用以下方式对价格进行排序:

    ORDER BY p.products_price_sorter
    

    希望这有助于某人

    UPDATE

    经过几天的努力让这个工作和玩得很好,这个插件是由Scott Wilson建议的:http://www.zen-cart.com/downloads.php?do=file&id=1612所以,如果你正在阅读它,可能值得一试 - 它允许在高级搜索和类别页面上对你的产品进行自定义排序 .

相关问题