Saltar al contenido

¿Cómo crear un alias en una tabla en las consultas de Laravel Eloquent (o usando Query Builder)?

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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *