解決済み
以下の私の答えを参照してください。
バックグラウンド
禅カートに精通している人なら誰でも、世界で最も無意味な製品ソートオプション、別名アルファドロップダウンソーターが付属していることを知っているでしょう。
基本的に、これにより、最初の文字/数字で製品を選択できるようになります。さて、私が買い物をしているとき、アイテムの開始文字が有用な基準になることはめったにないので、追加された日付、価格、および製品名でソートする、より有用な製品ソーターを作成しようとしています。次に、属性カテゴリに基づいてフィルタリングします。
問題
だから私は、価格以外のすべてに取り組んでいる自分のクエリを実行するようにソーターを強制することができました。
これが、値下げのために現在設定されている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:「注文句」の不明な列「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 and pd.language_id = '1' \ r \ n and p2c.categories_id = ' 1'GROUP BY p.products_id ORDER BY final_price ASC in /var/www/includes/classes/db/mysql/query_factory.php on line 101
そこで、101行目を見て、データベース抽象化クラスのエラー処理メソッドを参照しています。誰かがここで何が間違っているのか、そして私がそれをどのように解決するのかについて何か考えを持っていますか?