How to alias a table in Laravel Eloquent queries (or using Query Builder)?
eloquent, laravel, laravel-4, php
Solution
Laravel supports aliases on tables and columns with `AS`. Try
$users = DB::table('really_long_table_name AS t')
->select('t.id AS uid')
->get();
Let's see it in action with an awesome `tinker` tool
$ php artisan tinker
[1] > Schema::create('really_long_table_name', function($table) {$table->increments('id');});
// NULL
[2] > DB::table('really_long_table_name')->insert(['id' => null]);
// true
[3] > DB::table('really_long_table_name AS t')->select('t.id AS uid')->get();
// array(
// 0 => object(stdClass)(
// 'uid' => '1'
// )
// )
Problem
Lets say we are using Laravel's query builder: ``` $users = DB::table('really_long_table_name') ->select('really_long_table_name.id') ->get(); ``` I'm looking for an equivalent to this SQL: ``` really_long_table_name AS short_name ``` This would be especially helpful when I have to type a lot of selects and wheres (or typically I include the alias in the column alias of the select as well, and it gets used in the result array). Without any table aliases there is a lot more typing for me and everything becomes a lot less readable. Can't find the answer in the laravel docs, any ideas?