https://github.com/ngekoding/sql-column-alias-extractor
A helper to extract SQL column aliases from SELECT statements
https://github.com/ngekoding/sql-column-alias-extractor
Last synced: 24 days ago
JSON representation
A helper to extract SQL column aliases from SELECT statements
- Host: GitHub
- URL: https://github.com/ngekoding/sql-column-alias-extractor
- Owner: ngekoding
- License: mit
- Created: 2025-08-19T07:38:17.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2025-08-19T08:11:09.000Z (6 months ago)
- Last Synced: 2025-10-06T07:41:06.956Z (4 months ago)
- Language: PHP
- Size: 3.91 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SQL Column Alias Extractor
A PHP helper to extract column aliases from SQL SELECT statements using [PHPSQLParser](https://github.com/greenlion/php-sql-parser).
Supports usage with **any PHP project**, with optional adapters for **CodeIgniter 3** and **CodeIgniter 4**.
## Installation
```bash
composer require ngekoding/sql-column-alias-extractor
```
## Usage
### Basic usage
```php
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:
```php
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:
```php
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](LICENSE) for more information.