From 2e45dd874f70877f16d1920c9b6730d8edae489e Mon Sep 17 00:00:00 2001 From: Fernando Montoya Date: Fri, 9 May 2014 23:34:47 -0500 Subject: [PATCH] Constructor de consultas 100% --- queries.md | 112 ++++++++++++++++++++++++++--------------------------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/queries.md b/queries.md index b45be66..31916b6 100644 --- a/queries.md +++ b/queries.md @@ -10,20 +10,20 @@ - [Updates](#updates) - [Deletes](#deletes) - [Unions](#unions) -- [Pessimistic Locking](#pessimistic-locking) -- [Cache de consultras](#caching-queries) +- [Bloqueo pesimista](#pessimistic-locking) +- [Cache de consultas](#caching-queries) ## Introducción -The database query builder provides a convenient, fluent interface to creating and running database queries. It can be used to perform most database operations in your application, and works on all supported database systems. +El constructor de consulta de base de datos ofrece una cómoda, conveniente y fluída forma para crear y ejecutar consultas de base de datos. Puede ser usado para ejecutar la mayoría de las operaciones con la base de datos en tu aplicación, y funciona en todos los motores de base de datos soportados. -> **Note:** The Laravel query builder uses PDO parameter binding throughout to protect your application against SQL injection attacks. There is no need to clean strings being passed as bindings. +> **Nota:** El constructor de consultas de Laravel usa vinculación de parámetros PDO en todas las consultas para proteger tu aplicación de ataques de inyección de SQL. No hay necesidad de limpiar las cadenas de texto que son pasadas como vínculos. ## Selects -#### Retrieving All Rows From A Table +#### Obtener todas las filas de una tabla $users = DB::table('users')->get(); @@ -32,25 +32,25 @@ The database query builder provides a convenient, fluent interface to creating a var_dump($user->name); } -#### Retrieving A Single Row From A Table +#### Obtener una sola fila de una tabla $user = DB::table('users')->where('name', 'John')->first(); var_dump($user->name); -#### Retrieving A Single Column From A Row +#### Obtener una sola columna de una fila $name = DB::table('users')->where('name', 'John')->pluck('name'); -#### Retrieving A List Of Column Values +#### Obtener una lista de valores de una columna $roles = DB::table('roles')->lists('title'); -This method will return an array of role titles. You may also specify a custom key column for the returned array: +Éste método retornará una rreglo de títulos de roles. Puedes también especificar un índice de una columna personalizada para el arreglo retornado: $roles = DB::table('roles')->lists('title', 'name'); -#### Specifying A Select Clause +#### Especificar una sentencia Select $users = DB::table('users')->select('name', 'email')->get(); @@ -58,34 +58,34 @@ This method will return an array of role titles. You may also specify a custom k $users = DB::table('users')->select('name as user_name')->get(); -#### Adding A Select Clause To An Existing Query +#### Agregar una sentencia Select a una consulta previa $query = DB::table('users')->select('name'); $users = $query->addSelect('age')->get(); -#### Using Where Operators +#### Usar operadores Where $users = DB::table('users')->where('votes', '>', 100)->get(); -#### Or Statements +#### O sentencias $users = DB::table('users') ->where('votes', '>', 100) ->orWhere('name', 'John') ->get(); -#### Using Where Between +#### Usar Where entre $users = DB::table('users') ->whereBetween('votes', array(1, 100))->get(); -#### Using Where Not Between +#### Usar Where no entre $users = DB::table('users') ->whereNotBetween('votes', array(1, 100))->get(); -#### Using Where In With An Array +#### Usar Where In en un array $users = DB::table('users') ->whereIn('id', array(1, 2, 3))->get(); @@ -93,12 +93,12 @@ This method will return an array of role titles. You may also specify a custom k $users = DB::table('users') ->whereNotIn('id', array(1, 2, 3))->get(); -#### Using Where Null To Find Records With Unset Values +#### Usar Where Null para encontrar registros con valores no definidos $users = DB::table('users') ->whereNull('updated_at')->get(); -#### Order By, Group By, And Having +#### Usar Order By, Group By, And Having $users = DB::table('users') ->orderBy('name', 'desc') @@ -106,16 +106,16 @@ This method will return an array of role titles. You may also specify a custom k ->having('count', '>', 100) ->get(); -#### Offset & Limit +#### Usar Offset y Limit $users = DB::table('users')->skip(10)->take(5)->get(); -## Joins +## Uniones -The query builder may also be used to write join statements. Take a look at the following examples: +El constructor de consultras puede además ser usado para escribir sentencias JOIN. Mira los siguientes ejemplos: -#### Basic Join Statement +#### Sentencia básica de Join DB::table('users') ->join('contacts', 'users.id', '=', 'contacts.user_id') @@ -123,13 +123,13 @@ The query builder may also be used to write join statements. Take a look at the ->select('users.id', 'contacts.phone', 'orders.price') ->get(); -#### Left Join Statement +#### Sentencia Left Join DB::table('users') ->leftJoin('posts', 'users.id', '=', 'posts.user_id') ->get(); -You may also specify more advanced join clauses: +Puedes también crear sentencias JOIN más avanzadas: DB::table('users') ->join('contacts', function($join) @@ -138,7 +138,7 @@ You may also specify more advanced join clauses: }) ->get(); -If you would like to use a "where" style clause on your joins, you may use the `where` and `orWhere` methods on a join. Instead of comparing two columns, these methods will compare the column against a value: +Si deseas usar una sentencia estilo "where" en tus sentencias JOIN, puedes usar el método `where` y `orWhere` en el método `join`. En vez de comparar dos columnas, estos métodos compararán la columna contra un valor: DB::table('users') ->join('contacts', function($join) @@ -149,11 +149,11 @@ If you would like to use a "where" style clause on your joins, you may use the ` ->get(); -## Advanced Wheres +## Wheres Avanzados -Sometimes you may need to create more advanced where clauses such as "where exists" or nested parameter groupings. The Laravel query builder can handle these as well: +Algunas veces puedes necesitar la ccreación de sentencias where más avanzadas como "where exists" o agrupar jerarquicamente parámetros. El constructor de consultas de Laravel pueden manejar esto también: -#### Parameter Grouping +#### Agrupación de parámetros DB::table('users') ->where('name', '=', 'John') @@ -164,11 +164,11 @@ Sometimes you may need to create more advanced where clauses such as "where exis }) ->get(); -The query above will produce the following SQL: +La consulta anterior generará la siguiente consulta SQL: select * from users where name = 'John' or (votes > 100 and title <> 'Admin') -#### Exists Statements +#### Sentencias Exists DB::table('users') ->whereExists(function($query) @@ -179,7 +179,7 @@ The query above will produce the following SQL: }) ->get(); -The query above will produce the following SQL: +La consulta anterior generará la siguiente consulta SQL: select * from users where exists ( @@ -189,9 +189,9 @@ The query above will produce the following SQL: ## Aggregates -The query builder also provides a variety of aggregate methods, such as `count`, `max`, `min`, `avg`, and `sum`. +En constructor de consultas además ofrece una variedad de métodos de agregación, como `count`, `max`, `min`, `avg` y `sum`. -#### Using Aggregate Methods +#### Usando los métodos $users = DB::table('users')->count(); @@ -206,9 +206,9 @@ The query builder also provides a variety of aggregate methods, such as `count`, ## Expresiones planas -Sometimes you may need to use a raw expression in a query. These expressions will be injected into the query as strings, so be careful not to create any SQL injection points! To create a raw expression, you may use the `DB::raw` method: +Algunas veces puedes necesitar el uso de expresiones planas en una consulta. Dichas expresiones serán inyectadas dentro de la consulta como cadenas de texto, así que ten cuidado de no crear algún punto débil para inyecciones SQL! Para crear una expresión plana, puedes usar el método `DB::raw`: -#### Using A Raw Expression +#### Usar una expresión plana $users = DB::table('users') ->select(DB::raw('count(*) as user_count, status')) @@ -216,7 +216,7 @@ Sometimes you may need to use a raw expression in a query. These expressions wil ->groupBy('status') ->get(); -#### Incrementing or decrementing a value of a column +#### Aumentar o disminuir el valor de una columna: DB::table('users')->increment('votes'); @@ -233,23 +233,23 @@ You may also specify additional columns to update: ## Inserts -#### Inserting Records Into A Table +#### Insertando filas en una tabla DB::table('users')->insert( array('email' => 'john@example.com', 'votes' => 0) ); -If the table has an auto-incrementing id, use `insertGetId` to insert a record and retrieve the id: +Si las tablas tienen un ID autoincrementable, usa el método `insertGetId` para insertar una fila y retornar el ID: -#### Inserting Records Into A Table With An Auto-Incrementing ID +#### Insertar filas en una tabla con un ID autoincrementable $id = DB::table('users')->insertGetId( array('email' => 'john@example.com', 'votes' => 0) ); -> **Note:** When using PostgreSQL the insertGetId method expects the auto-incrementing column to be named "id". +> **Nota:** Cuando estés usando PostgreSQL el método `insertGetId` espera que la columna autoincrementable se llame "id". -#### Inserting Multiple Records Into A Table +#### Insertar múltiples filas en una tabla DB::table('users')->insert(array( array('email' => 'taylor@example.com', 'votes' => 0), @@ -259,7 +259,7 @@ If the table has an auto-incrementing id, use `insertGetId` to insert a record a ## Updates -#### Updating Records In A Table +#### Actualizar filas en una tabla DB::table('users') ->where('id', 1) @@ -268,55 +268,55 @@ If the table has an auto-incrementing id, use `insertGetId` to insert a record a ## Deletes -#### Deleting Records In A Table +#### Eliminar filas en una tabla DB::table('users')->where('votes', '<', 100)->delete(); -#### Deleting All Records From A Table +#### Eliminar todas las filas de una tabla DB::table('users')->delete(); -#### Truncating A Table +#### Truncar una tabla DB::table('users')->truncate(); ## Unions -The query builder also provides a quick way to "union" two queries together: +El constructor de consultas también ofrece una forma rápida para "unir" dos consultas en una sola: -#### Performing A Query Union +#### Realizar la unión de dos consultas $first = DB::table('users')->whereNull('first_name'); $users = DB::table('users')->whereNull('last_name')->union($first)->get(); -The `unionAll` method is also available, and has the same method signature as `union`. +El método `unionAll` está también disponible, y tiene la misma síntaxis que `union`. -## Pessimistic Locking +## Bloqueo pesimista -The query builder includes a few functions to help you do "pessimistic locking" on your SELECT statements. +El constructor de consultas incluye algunas funciones que te ayudan a realizar "bloqueos pesimistas" en tus sentencias SELECT. -To run the SELECT statement with a "shared lock", you may use the `sharedLock` method on a query: +Para ejecutar una sentencia SELECT con un "bloqueo compartido", puedes usar el método `sharedLock` en la consulta: DB::table('users')->where('votes', '>', 100)->sharedLock()->get(); -To "lock for update" on a SELECT statement, you may use the `lockForUpdate` method on a query: +Para "bloquear para actualizaciones" en una sentencia SELECT, puedes usar el método `lockForUpdate` en la consulta: DB::table('users')->where('votes', '>', 100)->lockForUpdate()->get(); ## Cache de consultas -You may easily cache the results of a query using the `remember` method: +Puedes fácilmente tener un cache de los resultados de una consulta con el método `remember`: -#### Caching A Query Result +#### Crear un cache de los resultados de una consulta: $users = DB::table('users')->remember(10)->get(); -In this example, the results of the query will be cached for ten minutes. While the results are cached, the query will not be run against the database, and the results will be loaded from the default cache driver specified for your application. +En este ejemplo, los resultados de la consulta serán guardados en cache durante diez minutos. Mientras los resultados estén guardados en cache, la consulta no se ejecutará otra vez en la base de datos, y los resultados será cargados del cache predeterminado configurado en tu aplicación. -If you are using a [supported cache driver](/docs/cache#cache-tags), you can also add tags to the caches: +Si estás usando un [controlador de cache soportado](/docs/cache#cache-tags), puedes además agregar etiquetas al caché: $users = DB::table('users')->cacheTags(array('people', 'authors'))->remember(10)->get();