Solución:
Laravel admite alias en tablas y columnas con AS
. Tratar
$users = DB::table('really_long_table_name AS t')
->select('t.id AS uid')
->get();
Veámoslo en acción con un asombroso tinker
herramienta
$ 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' // ) // )
Para usar alias en modelos elocuentes, modifique su código de esta manera:
Item
::from( 'items as items_alias' )
->join( 'attachments as att', DB::raw( 'att.item_id' ), '=', DB::raw( 'items_alias.id' ) )
->select( DB::raw( 'items_alias.*' ) )
->get();
Esto agregará automáticamente el prefijo de la tabla a los nombres de las tablas y devolverá una instancia de Items
modelo. no es un resultado de consulta simple. Añadiendo DB::raw
evita que laravel agregue prefijos de tabla a los alias.
Así es como se puede hacer. Daré un ejemplo al unirse para que se vuelva súper claro para alguien.
$products = DB::table('products AS pr')
->leftJoin('product_families AS pf', 'pf.id', '=', 'pr.product_family_id')
->select('pr.id as id', 'pf.name as product_family_name', 'pf.id as product_family_id')
->orderBy('pr.id', 'desc')
->get();
Espero que esto ayude.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)