ngekoding / sql-column-alias-extractor
A helper to extract SQL column aliases from SELECT statements
v1.0.0
2025-08-19 07:39 UTC
Requires
- php: >=5.6
- greenlion/php-sql-parser: ^4.5
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2025-08-19 08:11:12 UTC
README
A PHP helper to extract column aliases from SQL SELECT statements using PHPSQLParser.
Supports usage with any PHP project, with optional adapters for CodeIgniter 3 and CodeIgniter 4.
Installation
composer require ngekoding/sql-column-alias-extractor
Usage
Basic usage
use Ngekoding\SqlColumnAliasExtractor\SqlColumnAliasExtractor; $sql = "SELECT u.id, u.name AS username FROM users u"; $aliases = SqlColumnAliasExtractor::extract($sql); print_r($aliases); // [ // 'id' => 'u.id', // 'username' => 'u.name' // ]
Handling wildcards (*
)
Provide a resolver function that expands table.* into actual field names:
use Ngekoding\SqlColumnAliasExtractor\SqlColumnAliasExtractor; $wildcardResolver = function ($tableName) { // Example resolver for demo purposes. // In production, fetch column names dynamically from your database. if ($tableName === 'users') { return ['id', 'name', 'email']; } return []; }; $sql = "SELECT u.*, c.name AS company_name FROM users u JOIN companies c ON c.user_id=u.id"; $aliases = SqlColumnAliasExtractor::extract($sql, $wildcardResolver); print_r($aliases); // [ // 'id' => 'u.id', // 'name' => 'u.name', // 'email' => 'u.email', // 'company_name' => 'c.name' // ]
CodeIgniter Integration
You can use the provided adapter for seamless CodeIgniter 3 and CodeIgniter 4 support by just passing the query builder instance:
use Ngekoding\SqlColumnAliasExtractor\Adapter\CodeIgniter3Adapter; // use Ngekoding\SqlColumnAliasExtractor\Adapter\CodeIgniter4Adapter; // IMPORTANT! We don't call the `get` function here. $queryBuilder = $this->db ->select('u.id, u.name, u.email, c.name company_name') ->from('users u') ->join('companies c', 'c.user_id=u.id'); $aliases = CodeIgniter3Adapter::extract($queryBuilder); print_r($aliases); // [ // 'id' => 'u.id', // 'name' => 'u.name', // 'email' => 'u.email', // 'company_name' => 'c.name' // ]
License
The MIT License (MIT). Please see License File for more information.