Digamos que estamos usando el generador de consultas de Laravel:
$users = DB::table('really_long_table_name')
->select('really_long_table_name.id')
->get();
Estoy buscando un equivalente a este SQL:
really_long_table_name AS short_name
Esto sería especialmente útil cuando tengo que escribir muchas selecciones y dónde (o típicamente incluyo el alias en el alias de columna de la selección, y se usa en la matriz de resultados). Sin alias de tabla, hay mucho más tipeo para mí y todo se vuelve mucho menos legible. ¿No puede encontrar la respuesta en los documentos de laravel, alguna idea?
protected $table = "books";
), ¿cómo puedo crear un alias? (por ejemplo, sql generado... FROM books AS A ...
) :protected $table = 'really_long_table_name AS short_name';
pero eso fallaría en INSERT. También puede romper consultas de relación. Estoy usando Lumen y un patrón DDD / Repository para evitar Eloquent por completo.Para usar alias en modelos elocuentes, modifique su código de esta manera:
Esto agregará automáticamente el prefijo de tabla a los nombres de tabla y devolverá una instancia de
Items
modelo. No es un resultado de consulta simple. AgregarDB::raw
evita que laravel agregue prefijos de tabla a los alias.fuente
Unknown column 'table_alias.deleted_at'
->withTrashed()
y->whereNull('table_alias.deleted_at')
Así es como uno puede hacerlo. Daré un ejemplo al unirme para que quede súper claro para alguien.
Espero que esto ayude.
fuente
Para usar en Eloquent. Agregue encima de su modelo
protected $table = 'table_name as alias'
..entonces use en su consulta como
ModelName::query()->select(alias.id, alias.name)
fuente
Puede usar menos código, escribiendo esto:
Y, por supuesto, si desea seleccionar más campos, simplemente escriba un "," y agregue más:
Esto es muy práctico cuando utiliza una consulta compleja de combinaciones
fuente
Igual que la respuesta AMIB, para el error de borrado suave "Columna desconocida 'table_alias.deleted_at'", simplemente agregue y
->withTrashed()
luego maneje usted mismo como->whereRaw('items_alias.deleted_at IS NULL')
fuente