Saltar al contenido

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

Este enunciado fue evaluado por nuestros expertos para asegurar la exactitud de nuestro tutorial.

Solución:

Laravel admite alias en tablas y columnas con AS. Probar

$users = DB::table('really_long_table_name AS t')
           ->select('t.id AS uid')
           ->get();

Veámoslo en acción con un increíble 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 la tabla prefix a nombres de tablas y devuelve una instancia de Items modelo. no es un resultado de consulta simple. agregando DB::raw evita que laravel agregue prefijos de tabla a los alias.

Así es como uno puede hacerlo. Daré un ejemplo con la unión para que quede 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 *