Ultima Laravel
Share
Explore

Creamos un nuevo proyecto laravel
composer create-project laravel/laravel colegio

Vamos a crear la BD colegio que va a tener la tabla Alumno
image.png
En el fichero .env
image.png
Migraciones
Creamos la migración de la tabla
php artisan make:migration create_alumnos_table
Si queremos hacer la migración y el modelo a la vez ( tened en cuenta que se va a crear siguiendo las convenciones de laravel: nombre del modelo.- en nuestro caso será Alumno y la tabla asociada a ese modelo sera alumnos)
php artisan make:Model Alumno -m
image.png

Vamos a las migraciones, donde se ha creado una nueva para alumnos (la tabla es alumnos)
image.png
Que contiene
una clave de identificación (por defecto autoincrementable)
dos columnas ( created_at y updated_at ) creadas por el método de marcas de tiempo .
image.png
Vamos a modificar la tabla con los campos que queremos
$table->string('nombre_apellido', 75);
$table->integer('edad');
$table->string('telefono', 35)->nullable();
$table->string('direccion', 75)->nullable();
image.png
Para ejecutar la migración creada
php artisan migrate
image.png
En la BD
image.png
image.png
La tabla alumnos
image.png
Seeder Alumno
php artisan make:seeder AlumnoSeeder
image.png
Añadimos la referencia de la clase Alumno:
use App\Models\Alumno;
image.png
Creamos la variable $alumno, llenamos sus propiedades y finalmente utilizamos el método save(); igualmente llenamos con tres registros nuestra tabla alumnos.
<?php
namespace Database\Seeders;
use App\Models\Alumno;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class AlumnoSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$alumno = new Alumno();
$alumno->nombre_apellido = 'Daniel Miranda';
$alumno->edad = 18;
$alumno->telefono = '+725357789';
$alumno->direccion = 'Los Lirios #5566';
$alumno->save();
$alumno1 = new Alumno();
$alumno1->nombre_apellido = 'Mary Delgado';
$alumno1->edad = 21;
$alumno1->telefono = '+5673424233';
$alumno1->direccion = 'Cartegena #2343';
$alumno1->save();
$alumno2 = new Alumno();
$alumno2->nombre_apellido = 'Brain Cardozo';
$alumno2->edad = 23;
$alumno2->telefono = '+591355433';
$alumno2->direccion = 'Arenas #490';
$alumno2->save();
}
}
image.png
Cuando ejecutamos los Seeders desde Artisan, este llama a la única clase que es DatabaseSeeder. Por lo tanto para ejecutar los demás Seeders creados debemos instanciar a esta clase con el método call().
$this->call(AlumnoSeeder::class);
image.png
Ejecutar Seeders
Ya podemos cargar de datos la tabla de nuestra base de datos Ejecutamos la siguiente línea de código que llenará las tablas con datos.
php artisan db:seed
Para verificar los cambios en la base de datos, me voy a lo que es phpMyAdmin desde mi navegador, actualizo la página, abrimos la tabla y podemos verificar que los datos que definimos en los Seeders se encuentran cargados.
image.png

En la BD la tabla alumnos
image.png
Factories en Laravel
Con los Seeders que nos proporciona Laravel ya podemos llenar la tablas de nuestra base de datos. Sin embargo, es limitado ya que, si queremos llenar más de 10, 100 registros sería prácticamente un ejerció en sufrimiento. Porque se crea una variable por cada registro de la tabla.
Por esta razón Laravel cuenta con los Factories que es otra forma de llenar los datos de una forma más automatizada, y generar gran cantidad de datos.
Los Factories son sencillos de utilizar, solo se debe especificar en cada campo de la tabla que tipo de dato se quiere llenar, posteriormente la cantidad de registros que se quiere generar en la tabla.
Factory Alumnos
Ahora lo primero que aremos es crear nuestra clase AlumnoFactory con Artisan escribimos la siguiente línea de código.
php artisan make:factory AlumnoFactory
image.png
Crea AlumnoFactory.com
image.png
image.png
Modificamos
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
class AlumnoFactory extends Factory { /** * Define the model's default state. * * @return array */ public function definition() { return [ 'nombre_apellido' => $this->faker->firstName() . ' ' . $this->faker->lastName(), 'edad' => $this->faker->randomElement([18, 19, 20, 21]), 'telefono' => $this->faker->phoneNumber(), 'direccion' => $this->faker->address() ]; } }
image.png
Y cambiamos en el DatabaseSeeder
<?php
namespace Database\Seeders;
use App\Models\Alumno;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
Alumno::factory(10)->create();

}
}
image.png
Ejecutamos seeders
php artisan db:seed
image.png
image.png
image.png
Modelo
Si solo hacemos el modelo
php artisan make:model Alumno
Si usamos el modelo con –a (para que cree modelo, migración, seeder, Factory y controlador resource
php artisan make:model Alumno -a
Con la instrucción utilizada en el ejercicio
php artisan make:Model Alumno -m
Ha creado el modelo Alumno
image.png
Con el código:
image.png
Registramos las configuraciones de la tabla Alumnos.
protected $table = "alumnos";
protected $primaryKey = "id";
protected $fillable = ['nombre_apellido', 'edad', 'telefono', 'direccion'];
protected $hidden = ['id'];
Lo modificamos
image.png
Si es necesario podemos hacer public $timestamps = false;
Podemos crear funciones . Ejemplo
La función “Obteneralumnos” utiliza el método all() para obtener todo el listado de los alumnos de la tabla.
public function obtenerAlumnos()
{
return Alumno::all();
}
La función “ObtenerAlumnoPorId” utiliza el método find() pasando un parámetro Id para obtener a un determinado alumno.
public function obtenerAlumnoPorId($id)
{
return Alumno::find($id);
}
que podrían estar en el modelo
image.png
Controladores
Crear Controlador alumnos
php artisan make:controller AlumnoController
Si queremos que se creen todas las funciones necesarias para un CRUD
php artisan make:controller AlumnoController --resource
image.png
image.png
Se creará todos los métodos que necesitamos
image.png
Lo primero que haremos es llamar a la referencia del modeloAlumno .
use App\Models\Alumno;
Dentro de la función index escribimos la siguiente consulta.
$alumnos = Alumno::all();
return view('alumnos.index', ['alumnos' => $alumnos]);
image.png
De igual forma obtendremos todos los datos de la tabla alumnos. Seguidamente, retornaremos en la variable $alumnos a la vista alumnos.
Podemos hacer también con la instrucción
$alumnos = Alumno::all();
return view('alumnos.index', compact('alumnos'));
image.png

Nota : Ejemplo de Compact
Compact.- Crea una matriz que contiene variables y sus valores.

Por ejemplo, suponga que tiene las siguientes variables.
$nombre = 'Jon';
$apellido = 'Gomez';
$edad= '30';
Si los pones en un compact()de la siguiente manera,

$matriz = compact(['nombre', 'papá', 'mamá']);

Obtendrá la siguiente matriz asignada a $matriz
'nombre' => 'Jon',
'apellido' => 'Gomez',
Share
 
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.