0stoya / btfix
Fixes malformed SQL aliases (main_table.main_table) caused by Braintree or other extensions in Magento 2 admin order grid.
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:magento2-module
pkg:composer/0stoya/btfix
Requires
- magento/framework: >=102.0
This package is not auto-updated.
Last update: 2025-11-29 11:15:59 UTC
README
A Magento 2 module that fixes malformed SQL aliases generated by certain extensions (commonly Braintree) in the Admin Sales Order Grid.
Some modules incorrectly construct SQL like:
`main_table`.`main_table`.created_at
which breaks the grid with errors such as:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'main_table.main_table.created_at'
This module cleans the SQL on-the-fly, ensuring your order grid loads correctly.
π¦ Installation
Install via Composer:
composer require 0stoya/btfix
Then enable the module:
bin/magento setup:upgrade bin/magento cache:flush
That's it β no configuration required.
π What This Module Fixes
Magentoβs sales_order_grid uses the alias main_table.
Some payment/reporting modules incorrectly prepend the alias twice, causing SQL like:
main_table.main_table.status
This module:
-
Hooks into
Magento\Sales\Model\ResourceModel\Order\Grid\Collection::load() -
Inspects the generated SQL (
WHEREclause) -
Detects invalid patterns:
`main_table`.`main_table`.fieldmain_table.main_table.field
-
Automatically rewrites them to:
`main_table`.fieldmain_table.field
-
Allows the grid to execute normally.
It is safe, upgrade-proof, and does not override core or vendor files.
π Compatibility
β Magento 2.3.x β Magento 2.4.x β Fully compatible with Magento 2.4.8-p1 β Works alongside Braintree, PayPal, Adyen, Klarna, custom modules, etc. β No overrides β safe for upgrades
βοΈ Troubleshooting
Still seeing errors?
Some extensions may inject malformed aliases into other SQL parts such as:
ORDER BYHAVING
You can extend the cleaning list inside the plugin:
$partsToClean = ['where', 'order', 'having'];
Other aliases broken?
If another module uses a different alias, simply add another replacement rule.
π License
MIT License (or choose another if you prefer).