An open API service indexing awesome lists of open source software.

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

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.