# data[].attributes.body
Primero se debe instalar npm (nodejs), quien nos ayudará a compilar las vistas:

https://nodejs.org/en

Para colocar seguridad en Laravel, una de las formas mas fáciles es indicar que el mismo framework lo gestione, para lo cual ponemos el comando:

composer require laravel/ui

con lo que conseguimos que Laravel nos ayude cin las vistas, posteriormente generamos las vistas con bootstrap con el comando:

php artisan ui bootstrap --auth

posteriormente se corren los comandos:

npm install

npm run build

Con lo anterior se compilan las vistas y quedan listas para su uso

# data[].attributes.body
1.- Descargar PHP y composer

2.- Descomprimir PHP y colocar la carpeta en la raiz del disco

3.- Instalar composer

4.- Editar el php.ini para habilitar las extensiones (descomentar la linea)

fileinfo

zip

PDO_mysql

5.- crear el  proyecto laravel con :

composer create-project laravel/laravel <nombre proyecto>

6.- entrar al proyecto con:

cd <nombre del proyecto>

7.- ejecutar el proyecto con:

php artisan serve

8.- Se puede detener el servidor con Ctrl+C

9.-Opcionalmente se pueden instalar las extensiones de Visual Studio Code

Laravel Extension Pack

PHP

# data[].attributes.body
APP :  Backend de la aplicación

Http/Controllers - Controladores de la aplicación

Models - Modelos de datos de la aplicación

Config: Configuración total de la aplicación (generalmente no se edita)

Database: Elementos relacionados con la base de datos( OJO no es parte de la aplicación en si)

Migraciones - Representación de las tablas en la BD

Factories - Especificaciones para Fabricar Objetos

Seeders (Semillas) - Creación de datos de prueba

Public: elementos visibles en internet

frameworks

imágenes

recursos

etc.

Resources: Carpeta destinada al las vistas y elementos HTML

Routes: Rutas URL de los elementos de la aplicación

Storage: El almacenamiento que no es visible en internet

Vendor: Contiene los proveedores de las piezas de código que utiliza laravel

# data[].attributes.body
Administración

Para ejecutar las migraciones usamos el comando:

php artisan migrate

Para revertir la ultima migración se usa el comando:

php artisan migrate:rollback

para reiniciar todas las migraciones se usa el comando:

php artisan migrate:fresh

para revisar es estado de las migraciones usa el comando:

php artisan migrate:status

NOTA: hay que habilitar la extension pdo_mysql en el archivo php.ini (descomentando la linea)

Crear Migraciones

Para crear una migración se debe usar el comando:

php artisan make:migration <nombre>

ejemplo:

php artisan make:migration create_persona_table

# data[].attributes.body
Al crear una migración, se crean 2 funciones importantes:

up() - contiene los campos necesarios para crear la base de datos

down() - código seguro para eliminar los cambios de la base de datos

NOTA: Se recomienda leer la documentación de migraciones para asegurar los tipos de datos y estructura necesaria para crear las tablas en la BD

https://laravel.com/docs/10.x/migrations#migration-structure

NOTA: Se recomienda revisar también los tipos de datos utilizados en Laravel

https://laravel.com/docs/10.x/migrations#columns

Después de haber escrito los datos en la migración, se debe ejecutar con el comando:

php artisan migrate

En caso de ser necesario agregar columnas, se debe crear otra migración especificando la tabla a la que se hace referencia, el comando es:

php artisan make:migration <nombre> --table <nombre>

ejemplo:

php artisan make:migration add_telefono_to_persona --table persona

NOTA: Se recomienda también revisar como crear llaves foráneas para relacionar las tablas en la DB

https://laravel.com/docs/10.x/migrations#foreign-key-constraints

# data[].attributes.body
Para crear un modelo se utiliza el comando:

php artisan make:model <nombre>

ejemplo:

php artisan make:model Persona

Dentro del modelo crear se debe referenciar a que tabla hará referencia este modelo, esto se consigue con la instrucción:

protected $table = '<nombre_de_la_tabla>';

ejemplo:

protected $table = 'persona';

Para crear un modelo junto con migracion, seeder y factory utilizamos el comando:

php artisan make:model <nombre> -s -m -f

donde

-s = seeder

-m = migración

-f = factory

# data[].attributes.body
Un Factory, es un archivo que especifica como es que se debe crear un objeto de prueba, por lo que corresponde al llenado de los campos de la tabla en base de datos

Para crear un Factory se usa el comando:

php artisan make:factory <nombre>

ejemplo:

php artisan make:factory PersonaFactory

El factory se refiere a la especificación que se sigue a la hora de crear objetos de prueba, por lo que se debe agregar el modelo y los valores a través de un arreglo, utilizando faker()

NOTA: se recomienda revisar los metodos de faker a través de la siguiente liga:

https://github.com/fzaninotto/Faker

ejemplo:

'name' => fake()->name(),
'edad' => fake()->numberBetween(19,65),
'telefono' =>fake()->numberBetween(3333333333,9999999999)

# data[].attributes.body
Para crear un Seeder, se utiliza el comando:

php artisan make:seeder <nombre>

ejemplo:

php artisan make:seeder PersonaSeeder

dentro del método run() se coloca la cantidad de elementos que se deben generar a travez del seeder

App\Models\Persona::factory(100)->create();

Finalmente para ejecutar los seeders se utiliza el comando:

php artisan db:seed

# data[].attributes.body
Para ingresar al entorno de pruebas de base de datos de debe colocar el comando:

php artisan tinker

dentro se pueden crear elementos usando:

$p=new Persona(['nombre'=>'jose','telefono'=>'33333']
$p->save()

NOTA: para importar los namespaces y no usar la ruta real, se debe usar el comando (dentro de tinker):

use <ruta> as <alias>

ejemplo:

use App\Models\Persona as Persona

de esta manera es mas como llamar los modelos para su depuración.

ademas se pueden hacer consultas como:

Persona::all()
Persona::all()->where('nombre','jose')

# data[].attributes.body
Blade es el sistema de plantillas por defecto de laravel y sus elementos importantes son:

@yield('nombre')  define una sección editable en el esquema de plantillas

@include('nombre')  Incluye una sección de código HTML proveniente de otro archivo

@extends('nombre') Hereda todo el contenido y estructura de otro archivo HTML

@section('nombre') Establece el contenido de la sección especificada

{{asset ('ruta')}} accede al recurso especificado dentro de la carpeta public