Las tablas de base de datos frecuentemente están relacionadas a otra tabla. Por ejemplo, un post de un blog puede tener muchos comentarios o un pedido podría estar relacionado al usuario que lo ordenó. Eloquent hace que manejar y trabajar con estas relaciones sea fácil y soporta varios tipos de relaciones:
Las relaciones de Eloquent se definen como métodos en tus clases de modelo de Eloquent. Debido a que, como los mismos modelos Eloquent, las relaciones también sirven como poderosos constructores de consultas, el definir relaciones como métodos proporciona potentes capacidades de encadenamiento de métodos y consultas. Por ejemplo, podemos encadenar restricciones adicionales en esta relación posts:
$user->posts()->where('active', 1)->get();
Pero, antes de profundizar demasiado en el uso de relaciones, aprendamos cómo definir cada tipo.
Los nombres de las relaciones no pueden colisionar con nombres de atributos dado que eso podría ocasionar que tu modelo no sea capaz de saber cuál resolver.
El ORM Eloquent incluido con Laravel proporciona una genial y simple implentación básica de ActiveRecord para trabajar con tu base de datos. Cada tabla de base de datos tiene un correspondiente «Modelo» el cual es usado para interactuar con la tabla. Los modelos permiten que consultes los datos en tus tablas, así como también insertar nuevos registros dentro de la tabla.
Antes de empezar, asegúrate de configurar una conexión de base de datos en config/database.php. Para mayor información sobre la configuración de tu base de datos, revisa la documentación.
Definiendo modelos
Para empezar, vamos a crear un modelo de Eloquent. Los modelos residen típicamente en el directorio app, pero eres libre de colocarlos en cualquier parte que pueda ser auto-cargada de acuerdo a tu archivo composer.json. Todos los modelos de Eloquent extienden la clase Illuminate\Database\Eloquent\Model.
La forma más fácil de crear una instancia del modelo es usando el Comando Artisanmake:model:
php artisan make:model Flight
Si prefieres generar una migración de base de datos cuando generes el modelo, puedes usar la opción --migration o -m:
Redis es un almacenamiento avanzado de pares clave-valor y de código abierto. A menudo se le denomina como un servidor de estructura de datos ya que las claves pueden contener cadenas, hashes, listas, sets y sets ordenados.
Antes de utilizar Redis con Laravel, te recomendamos que instales y uses la extensión de PHP PhpRedis mediante PECL. La extensión es más difícil de instalar, pero contribuirá a un mejor rendimiento en aplicaciones que hacen un uso intensivo de Redis.
Alternativamente, puedes instalar el paquete predis/predis mediante Composer:
composer require predis/predis
El mantenimiento de Predis se ha abandonado por su autor original y puede que sea eliminado de Laravel en futuras versiones.
Laravel incluye un método sencillo para alimentar tu base de datos con datos de prueba usando clases Seeder. Todas las clases Seeder son almacenadas en el directorio database/seeds. Las clases Seeder pueden tener cualquier nombre que desees, pero deberías seguir probablemente alguna convención razonable, tales como UsersTableSeeder etc. De forma predeterminada, una clase DatabaseSeeder se define para ti. A partir de esta clase, puedes usar el método call para registrar otras clases seeder, permitiendo que controles el orden en que se ejecutan.
Escribiendo seeders
Para generar un seeder, ejecuta el Comando Artisanmake:seeder. Todos los seeders generados por el framework serán colocados en el directorio database/seeds:
php artisan make:seeder UsersTableSeeder
Una clase seeder contiene solamente un método de forma predeterminada: run. Este método es llamado cuando el comando Artisandb:seed se ejecuta. Dentro del método run, puedes insertar datos en tu base de datos en la forma que desees. Puedes usar el constructor de consultas para insertar datos manualmente o puedes usar los Model Factories de Eloquent.
Como un ejemplo, vamos a modificar la clase DatabaseSeeder predeterminada y agregar una instrucción insert al método run:
<?php
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10).'@gmail.com',
'password' => Hash::make('password'),
]);
}
}
Puedes definir cualquier dependencia que necesites dentro de la firma del método run. Se resolverán automáticamente a través del contenedor de servicio de Laravel.
Las migraciones son como el control de versión para tu base de datos, permiten que tu equipo modifique y comparta el esquema de base de datos de la aplicación. Las migraciones son emparejadas típicamente con el constructor de esquema de Laravel para construir el esquema de base de datos de tu aplicación. Si inclusive has tenido que decirle a un miembro de equipo que agregue una columna manualmente a sus esquemas de bases de datos local, has encarado el problema que solucionan las migraciones de base de datos.
La clase facadeSchema de Laravel proporciona soporte de base de datos orientado a la programación orientada a objetos para la creación y manipulación de tablas a través de todos los sistemas de bases de datos soportados por Laravel.
Generando migraciones
Para crear una migración, usa el comando Artisanmake:migration:
php artisan make:migration create_users_table
La nueva migración estará ubicada en tu directorio database/migrations. Cada nombre de archivo de migración contiene una marca de tiempo, la cual permite que Laravel determine el orden de las migraciones.
Las opciones --table y --create también pueden ser usadas para indicar el nombre de la tabla y si la migración estará o no creando una nueva tabla. Estas opciones rellenan previamente el archivo stub de migración generado con la tabla especificada:
Si prefieres especificar una ruta de directorio de salida personalizada para la migración generada, puedes usar la opción --path al momento de ejecutar el comando make:migration. La ruta de directorio dada debe ser relativa a la ruta de directorio base de tu aplicación.
Estructura de migración
Una clase de migración contiene dos métodos: up y down. El método up es usado para agregar nuevas tablas, columnas, o índices para tu base de datos, mientras el método down debería revertir las operaciones ejecutadas por el método up.
Dentro de ambos métodos puedes usar el constructor de esquema de Laravel para crear y modificar expresivamente las tablas. Para aprender sobre todos los métodos disponibles en el constructor Schema, inspecciona su documentación. Por ejemplo, la siguiente migración crea una tabla flights:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateFlightsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('flights', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('airline');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('flights');
}
}
Ejecutando migraciones
Para ejecutar todas tus maravillosas migraciones, ejecuta el comando Artisan migrate:
Forzando las migraciones para ejecutar en producción
Algunas operaciones de migración son destructivas, lo que significa que pueden causar que pierdas tus datos. Con el propósito de protegerte de ejecutar estos comandos contra tu base de datos de producción, recibirás un mensaje de confirmación antes que los comandos sean ejecutados. Para forzar que los comandos se ejecuten sin retardo, usa el indicador --force.
En otros frameworks, la paginación puede ser muy difícil. El paginador de Laravel está integrado con el constructor de consultas y el ORM Eloquent, proporcionando una conveniente y fácil manera de usar paginación de resultados de forma predeterminada. El HTML generado por el paginador es compatible con el Framework de CSS Bootstrap.
El constructor de consultas (query builder) de Base de datos de Laravel, proporciona una interfaz fluida y conveniente para la creación y ejecución de consultas de bases de datos. Puede ser usado para ejecutar las principales operaciones de bases de datos en tu aplicación y funciona en todos los sistemas de bases de datos soportados.
El constructor de consultas de Laravel usa enlazamiento de parámetros PDO para proteger tu aplicación contra ataques de inyección SQL. No hay necesidad de limpiar cadenas que están siendo pasadas como enlaces.
PDO no admite el enlace de nombres de columna (binding). Por lo tanto, nunca debes permitir que la entrada de usuario dicte los nombres de columna a los que hacen referencia tus consultas, incluidas las columnas «ordenar por», etc. Si debes permitir que el usuario seleccione ciertas columnas para consultar, valida siempre los nombres de las columnas con una lista blanca de columnas permitidas.
Obteniendo los resultados
Obteniendo todas las filas de una tabla
Puedes usar el método table de la clase facade DB para empezar una consulta. El método table devuelve una instancia para construir consultas fáciles de entender para la tabla dada, permitiendo que encadenes más restricciones dentro de la consulta y recibas finalmente los resultados usando el método get:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
class UserController extends Controller
{
/**
* Show a list of all of the application's users.
*
* @return Response
*/
public function index()
{
$users = DB::table('users')->get();
return view('user.index', ['users' => $users]);
}
}
El método get devuelve una colección de la clase Illuminate\Support\Collection que contiene los resultados, donde cada resultado es una instancia del objeto StdClass de PHP. Puedes acceder al valor de cada columna accediendo a la columna como una propiedad del objeto:
foreach ($users as $user) {
echo $user->name;
}
Obteniendo una sola fila / columna de una tabla
Si solamente necesitas recuperar una sola fila de la tabla de la base de datos, puedes usar el método first. Este método devolverá un solo objeto StdClass:
Si no necesitas una fila completa, puedes extraer un solo valor de un registro usando el método value. Este método devolverá directamente el valor de la columna:
Para obtener una sola fila por su valor de columna id, usa el método find:
$user = DB::table('users')->find(3);
Obteniendo una lista de valores de columna
Si prefieres obtener una Colección que contenga los valores de una sola columna, puedes usar el método pluck. En el siguiente ejemplo, obtendremos una colección de títulos de rol:
Laravel hace que la interacción con las bases de datos sea extremadamente fácil a través de una variedad de backends de bases de datos usando SQL nativo, el constructor de consultas query builder y el ORM Eloquent. Actualmente, Laravel soporta cuatro bases de datos:
En el pasado, es posible que hayas generado una entrada Cron para cada tarea que necesitabas programar en tu servidor. Sin embargo, esto puede convertirse rápidamente en un sufrimiento, dado que tu programación de tareas no está en el control de versiones y debes hacer SSH a tu servidor para agregar entradas Cron adicionales.
El programador de comandos de Laravel te permite definir tu programación de comandos de forma fluída y expresiva dentro de Laravel. Al usar el programador, una sola entrada Cron es necesaria en tu servidor. Tu programación de tareas es definida en el método schedule del archivo app/Console/Kernel.php. Para ayudarte a comenzar, un ejemplo sencillo está definido dentro del método.
Laravel ahora ofrece Horizon, un hermoso tablero y sistema de configuración para las colas motorizadas por Redis. Entra en Horizon documentation para más información.
Las colas de Laravel brindan una API unificada a través de una variedad de backends de cola diferentes como Beanstalk, Amazon SQS, Redis, o incluso una base de datos relacional. Las colas permiten diferir el procesamiento de una tarea que consume tiempo, como enviar un correo electrónico, para un momento posterior. Diferir estas tareas acelera drásticamente las solicitudes web en tu aplicación.
La configuración de cola está almacenada en config/queue.php. En este archivo encontrarás configuraciones de conexión para cada driver de cola incluido en el framework, que comprende una base de datos, Beanstalkd, Amazon SQS, Redis, y un controlador sincrónico que ejecutará trabajos inmediatamente (para uso local). Un driver de cola null también está incluido, que descarta los trabajos completados de la cola.
Styde usa cookies para guardar tus preferencias y para seguimiento anónimo AceptarLeer más
Privacy & Cookies Policy
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.