-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathLaravel.txt
10387 lines (7753 loc) · 312 KB
/
Laravel.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
=====================
Guía de Laravel by dM
=====================
Usaremos $ para describir los comandos que se usaran con usuario regular.
Usaremos # para describir los comandos que se usaran con superusuario.
================
¿Qué es Laravel?
================
Laravel es un framework de código abierto para desarrollar aplicaciones y
servicios web con PHP 5 y PHP 7. Su filosofía es desarrollar código PHP de forma
elegante y simple, evitando el "código espagueti". Fue creado en 2011 y tiene
una gran influencia de frameworks como Ruby on Rails, entre otros...
Gran parte de Laravel está formado por dependencias, especialmente de Symfony,
esto implica que el desarrollo de Laravel dependa también del desarrollo de sus
dependencias.
=======================
¿Como funciona Laravel?
=======================
Laravel utiliza el paradigma del "Modelo-Vista-Controlador"
1) Un usuario ingresa a una página o sistema web creado con Laravel, a ese
ingreso se le llama "solicitud" o "petición".
2) Esa "solicitud" o "petición" llega a un archivo llamado rutas, las rutas es
un archivo donde especificamos que rutas o direcciones url están disponible en
un sistema/página web.
Por ejemplo si yo tengo una página llamada misitio.com y puedo acceder a
"misitio.com/registro" donde muestra un formulario para registrarse, "/registro"
es una ruta. por tanto se debe definir en ese archivo donde están las rutas. si
intento acceder a "misitio.com/prueba" y me da error, eso quiere decir que esa
ruta no existe o no ha sido especificada en el archivo de rutas.
Si una ruta válida es visitada, el paso siguiente es ir a un controlador o una
vista, el ir a un controlador solo se hará si es necesario, el controlador es la
parte donde Laravel realiza operaciones con los datos, inserción, listar,
actualización de la base de datos, calculos, ejecutar funciones con los datos,
entre otros. En el controlador es donde está la lógica de un sistema/página web.
El controlador puede acceder al modelo, el modelo son las tablas de la base de
datos reflejadas en archivos php.
Entonces un controlador puede solicitar al modelo que le traiga todos los
usuarios registrados en el sistema para, el controlador los recibe de vuelta y
ahora puede mandarlos a una vista para que sean mostrados en una página simple.
La segunda opción es ir a una vista directamente, una vista es una pagina simple
donde se muestran textos, imagenes, videos, etc, sin interactuar con otros
elementos del sistema, sin consultas ni nada.
Otro elemento del paradigma de Laravel son los Middlewares, que no es mas que un
filtro. Imaginemos que tenemos un panel de administración del sistema, y no
queremos que todos los usuarios puedan acceder a ese panel, si no solo usuarios
con permisos adecuados, entonces ahí aparecen los middlewares y sus
funcionalidades. Las rutas y los controladores pueden acceder a los middlewares.
===============
Características
===============
-Sistema de ruteo, también RESTful
-Blade, Motor de plantillas
-Peticiones Fluent
-Eloquent ORM
-Basado en Composer
-Soporte para el caché
-Soporte para MVC
-Usa componentes de Symfony
-Adopta las especificaciones PSR-212 y PSR-4
¿Qué es un ORM (Object Relational Mapping)?
===========================================
Un ORM es un modelo de programación que permite mapear las estructuras de una
base de datos relacional (SQL Server, Oracle, MySQL, etc.), en adelante RDBMS
(Relational Database Management System), sobre una estructura lógica de
entidades con el objeto de simplificar y acelerar el desarrollo de nuestras
aplicaciones.
Las estructuras de la base de datos relacional quedan vinculadas con las
entidades lógicas o base de datos virtual definida en el ORM, de tal modo que
las acciones CRUD (Create, Read, Update, Delete) a ejecutar sobre la base de
datos física se realizan de forma indirecta por medio del ORM.
¿Qué es el eloquent?
====================
Eloquent es el ORM que incluye Laravel para manejar de una forma fácil y
sencilla los procesos correspondientes al manejo de bases de datos en nuestro
proyecto, gracias a las funciones que provee podremos realizar complejas
consultas y peticiones de base de datos sin escribir una sola línea de código
SQL.
Viene incluido con Laravel y proporciona una implementación de ActiveRecord
hermosa y simple para trabajar con su base de datos. Cada tabla de la base de
datos tiene un "Modelo" correspondiente que se utiliza para interactuar con esa
tabla. Los modelos le permiten consultar datos en sus tablas, así como insertar
nuevos registros en la tabla.
¿Qué es blade en laravel?
=========================
Blade es un motor de plantillas simple y a la vez poderoso proporcionado por
Laravel. A diferencia de otros motores de plantillas populares de PHP, Blade no
te impide utilizar código PHP plano en tus vistas.
=================================================================
Instalación de paquetes necesarios para la instalación de Laravel
=================================================================
**Importante** Esta guía fue probada en GNU/Linux Debian 9 Stretch
usando las siguientes versiones:
Instalar Apache:
# apt-get install apache2
-----
Instalar PHP y extras para apache:
# apt-get install php7.0
# aptitude install php7.0-gd php7.0-mysql libapache2-mod-php7.0 php-zip php7.0-mbstring php7.0-xml php7.0-intl php-symfony-intl php7.0-libsodium
# aptitude install php-symfony-config php-symfony-dependency-injection php-symfony-expression-language php-symfony-yaml php-symfony-browser-kit php-libsodium php-symfony-http-kernel php-uuid
-----
Instalar Mysql para usarlo en un futuro como motor de base de datos:
# apt-get install mysql-server
================================
Para seguir necesitamos composer
================================
Composer es un manejador de dependencias, no un gestor de paquetes. Pero es
cierto que trata con paquetes y librerías, la instalación siempre es local para
cualquier proyecto, las librerías se instalan en un directorio por defecto
(normalmente es /vendor). Composer es capaz de instalar las librerías que
requiere tu proyecto con las versiones que necesiten. ¿Y si mis librerías
dependen de otras? También es capaz de resolver eso y descargar todo lo
necesario para que funcione y así quitarnos del dolor de cabeza de hacer todo
eso de forma manual.
=================================
¿Qué problemas resuelve Composer?
=================================
Tienes un proyecto que depende de ciertas librerías desarrolladas por terceros,
y a su vez, éstas librerías también dependen de otras (tú no tienes porqué
conocer estas librerías) lo que hace Composer en este caso es averiguar que
librerías deben instalarse; es decir, resuelve todas las dependencias indirectas
y descarga automáticamente la versión correcta de cada paquete.
Descargamos composer:
$ php -r "readfile('https://getcomposer.org/installer');" | php
El comando anterior nos descarga el fichero "composer.phar"
-----
Movemos composer a /usr/local/bin, lo cual nos permitirá que este disponible
desde donde sea que lo necesitemos:
# mv composer.phar /usr/local/bin/composer
-----
Comprobamos la instalación con el siguiente comando:
$ composer
======================
Instalación de Laravel
======================
Laravel utiliza Composer para manejar las dependencies. entonces, antes de usar
Laravel, hay que tener instalado Composer en nuestra máquina.
Primero descargamos el instalador de Laravel vía Composer
$ composer global require "laravel/installer=~1.1"
La salida de este comando:
Changed current directory to /home/user/.config/composer
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 10 installs, 0 updates, 0 removals
- Installing symfony/process (v3.4.6): Downloading (100%)
- Installing psr/log (1.0.2): Downloading (100%)
- Installing symfony/debug (v3.4.6): Downloading (100%)
- Installing symfony/polyfill-mbstring (v1.7.0): Downloading (100%)
- Installing symfony/console (v3.4.6): Downloading (100%)
- Installing guzzlehttp/promises (v1.3.1): Downloading (100%)
- Installing psr/http-message (1.0.1): Downloading (100%)
- Installing guzzlehttp/psr7 (1.4.2): Downloading (100%)
- Installing guzzlehttp/guzzle (6.3.0): Downloading (100%)
- Installing laravel/installer (v1.3.4): Downloading (100%)
symfony/polyfill-mbstring suggests installing ext-mbstring (For best performance)
symfony/console suggests installing symfony/event-dispatcher ()
symfony/console suggests installing symfony/lock ()
Writing lock file
Generating autoload files
Nos dice el directorio donde va a ser instalado laravel luego prosige con la
instalación.
Luego de la instalación, comprobamos la ruta donde está laravel con:
$ cd .config/composer/vendor/bin
Si navegamos bien hacia ese directorio, entonces seguimos, agregamos al final
del .bashrc lo siguiente:
PATH=$PATH:~/.config/composer/vendor/bin
Aplicamos los cambios con el siguiente comando:
$ source .bashrc
El primer comando el una comprobación corta, el segundo es completa y larga,
recomendado el primero.
Creamos un proyecto de laravel para probar:
$ laravel new nombre_del_proyecto
=================================================================
En la siguiente sección instalaremos Laravel en su última versión
=================================================================
**Importante** Esta guía fue probada usando la versión 7.2 de php,
Composer 1.6.3, Laravel Installer 2.0, Laravel Framework 5.6.11 en
GNU/Linux Debian 9 Stretch.
$ sudo apt-get install apt-transport-https lsb-release ca-certificates
$ sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
$ echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
$ sudo apt-get update
Si da problema con la firma, volver a ejecutar:
$ sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
--2019-03-18 21:28:18-- https://packages.sury.org/php/apt.gpg
y probar de nuevo el update.
==================================
Instalación de paquetes necesarios
==================================
Buscamos la versión de php disponible en el repositorio.
$ aptitude search search php
-----
Instalamos la versión disponible del paquete
$ sudo apt-get install php7.2-cli
-----
Verificar la versión de php que se instaló.
$ php -v
-----
Instalar Apache:
# apt-get install apache2
-----
Instalar dependencias extras necesarias:
# aptitude install php7.2-gd php7.2-mysql libapache2-mod-php7.2 php-zip php7.2-mbstring php7.2-xml php7.2-intl
# aptitude install php-symfony-config php-symfony-dependency-injection php-symfony-expression-language php-symfony-yaml php-symfony-browser-kit php-libsodium php-symfony-http-kernel php-uuid
-----
Instalar Mysql para usarlo en un futuro como motor de base de datos
# apt-get install mysql-server
======================
Instalación de Laravel
======================
Instalar composer.
-----
Instalar Laravel
$ composer global require "laravel/installer"
-----
Luego de la instalación, comprobamos la ruta donde está laravel con:
$ cd .config/composer/vendor/bin
-----
Si navegamos bien hacia ese directorio, entonces seguimos, agregamos al final
del .bashrc lo siguiente:
PATH=$PATH:~/.config/composer/vendor/bin
-----
Aplicamos los cambios con el siguiente comando:
$ source .bashrc
El primer comando es para una comprobación corta, el segundo es completa y
larga, recomendado el primero.
-----
Creamos un proyecto de laravel para probar:
$ laravel new mysite
Luego de la generación del proyecto e instalación de dependendencias
-----
Entramos en el dirctorio del proyecto y corremos el servidor de desarrollo:
$ php artisan serve
Si corre sin problemas podemos visitar: localhost:8000/ y visualizar Laravel en
letras grandes.
======================================================
Intstalar y crear un proyecto de Laravel, vía composer
**Opción recomendada**
======================================================
Primero hay que instalar composer con los pasos descritos más arriba.
Luego, con el siguiente comando especificacoms la versión que queremos instalar:
$ composer create-project --prefer-dist laravel/laravel mysite "5.4.*"
Con el comando anterior lo que estamos declarando es que cree el proyecto
"mysite" y que se use la ultima actualización de la versión 5.4 de Laravel, que
es compatible con el php7.0 que está instalado.
Ahora vamos a correr el servidor local de desarrllo usando el script Artisan.
Este comando inicia el servidor de desarrllo en http://localhost:8000:
Entramos en el dirctorio del proyecto y corremos el servidor de desarrollo:
$ php artisan serve
Si corre sin problemas podemos visitar: localhost:8000/ y visualizar Laravel en
letras grandes.
Con el siguiente comando se instala la última versión disponible:
$ composer create-project --prefer-dist laravel/laravel mysite
Con esta opción Laravel quedará instalao dentro del proyecto creado, no estará
instalado de manera global en el sistema.
===========
Tips/Extras
===========
Primero que nada deberemos saber que cuando se ejecuta un proyecto este busca la
carpeta publica (public) la cual contiene un archivo index.php que se carga por
default el cual carga el proyecto.
-----
Para comprobar la versión de Laravel instalada entramos en el directorio de un
proyecto creado:
Hay 2 formas:
1) Revisar el archivo composer.json:
Navega a la raíz del proyecto Laravel, abre el archivo composer.json, busca la
línea que tiene "laravel/framework". El valor que aparece al lado te indicará la
versión de Laravel que se está utilizando.
Por ejemplo:
"require": {
"laravel/framework": "^8.0"
}
2) Usar la línea de comandos:
Abre la terminal en la raíz del proyecto, ejecuta el siguiente comando:
$ php artisan --version
Este comando mostrará la versión exacta de Laravel que se está utilizando en el
proyecto.
-----
Para cambiar el puerto donde se esta sirviendo el proyecto:
$ php artisan serve --port=9000
-----
Para cambiar la ip y el puerto donde se esta sirviendo el proyecto:
$ php artisan serve --host=192.168.0.100 --port=8000
-----
Si se va a servir el proyecto por una url diferente a localhost, algunas cosas
como las imágenes puede ser que sigan siendo servidas por localhost por tanto se
puede configurar la variable APP_URL en el archivo .env que está oculto en el
directorio raíz del proyecto:
#APP_URL=http://localhost
APP_URL=http://192.168.0.100
Cuando se clona un proyecto de un repositorio, lo mas común es que se omita la
carpeta /vendor que contiene los paquetes/librerías requeridas por el proyecto,
entonces las instalamos con:
$ composer install
===================================
Estructura del proyecto con Laravel
===================================
Vamos a comentar los principales directorios de la estructura de Laravel para
ello me he ayudado de la documentación de la estructura en español de Laravel,
donde puedes encontrar información más detallada:
-app: Contiene los modelos, y el código base de nuestra aplicación, incluirá
los directorios Console, Http y Providers.
-app/Http/routes.php: para la definición de las rutas.
-app/Http/Controllers: Aquí será donde se definirán los controladores.
-app/config/app.php: Contiene configuración general de la aplicación.
-bootstrap: Contiene el archivo app.php que arranca el framework. Este directorio
también alberga un directorio de caché que contiene archivos generados por el
framework para la optimización del rendimiento, como los archivos de caché de
rutas y servicios. Normalmente, no debería necesitar modificar ningún archivo
dentro de este directorio.
-config: Como su nombre lo indica, contiene todos los archivos de configuración
de su aplicación. Es una gran idea leer todos estos archivos y familiarizarse
con todas las opciones disponibles.
-database: El directorio de la base de datos contiene las migraciones de la base
de datos, las fábricas de modelos y las semillas o seeds. Si lo desea, también
puede utilizar este directorio para almacenar una base de datos SQLite.
-resources/views: Contiene las vistas, donde usaremos el motor de plantillas
Blade. El directorio de recursos contiene sus vistas, así como archivos CSS o
JavaScript sin compilar, este directorio también aloja todos sus archivos de
idioma.
-public: Carpeta pública desde dónde se inicia el proceso de ejecución de una
aplicación Laravel.
El punto de entrada para todas las solicitudes a una aplicación de Laravel es el
archivo public/index.php. Todas las solicitudes son dirigidas a este archivo por
la configuración de su servidor web (Apache / Nginx). El archivo index.php no
contiene mucho código. Más bien, es un punto de partida para cargar el resto del
marco.
El archivo index.php carga la definición de autocargador generada por Composer y
luego recupera una instancia de la aplicación Laravel desde bootstrap/app.php.
-routes: El directorio de rutas contiene todas las definiciones de ruta para su
aplicación. De forma predeterminada, se incluyen varios archivos de ruta con
Laravel: web.php, api.php, console.php y channels.php.
-routes/web.php: Contiene rutas que RouteServiceProvider coloca en el grupo de
middleware web, que proporciona el estado de la sesión, la protección CSRF y el
cifrado de cookies. Si su aplicación no ofrece una API RESTful sin estado, es
probable que todas sus rutas estén definidas en el archivo web.php.
-routes/api.php: Contiene rutas que RouteServiceProvider coloca en el grupo de
middleware api. Estas rutas están destinadas a ser sin estado, por lo que las
solicitudes que ingresan a la aplicación a través de estas rutas deben
autenticarse mediante tokens y no tendrán acceso al estado de la sesión.
-routes/console.php: Es donde puedes definir todos tus comandos de consola
basados en el cierre. Cada cierre está vinculado a una instancia de comando, lo
que permite un enfoque simple para interactuar con los métodos de I/O de cada
comando. Aunque este archivo no define rutas HTTP, define puntos de entrada
(rutas) basados en la consola en su aplicación.
-routes/channels.php: Es donde puede registrar todos los canales de transmisión
de eventos que admite su aplicación.
-storage: El directorio de almacenamiento contiene sus registros, plantillas
Blade compiladas, sesiones basadas en archivos, cachés de archivos y otros
archivos generados por el framework. Este directorio está segregado en
los directorios app, framework y logs. El directorio app se puede utilizar para
almacenar cualquier archivo generado por su aplicación. El directorio framewok
se utiliza para almacenar cachés y archivos generados por el marco. Finalmente,
el directorio logs contiene los archivos de registro de su aplicación.
-storage/app/public: Se puede utilizar para almacenar archivos generados por el
usuario, como los avatares de perfil, que deberían ser de acceso público. Debe
crear un enlace simbólico en public/storage que apunte a este directorio. Puede
crear el enlace usando el comando de artisan php artisan storage:link
-vendor: Contiene los paquetes y dependencias de Composer instaladas.
================================================
Actualizar proyectos de Laravel luego de un pull
================================================
$ composer install
$ npm install
$ npm run dev
$ composer dumpautoload
$ php artisan migrate
$ php artisan serve
===========================
Limpiar la cache en Laravel
===========================
Ejecute el siguiente comando para borrar la memoria caché de la aplicación
Laravel.
$ php artisan cache:clear
==============================================================
Eliminar rastros de la configuración de un proyecto en Laravel
==============================================================
Elimina rastros de la configuración del sistema y las carga de nuevo, es decir,
es como si borraras los .pyc en proyectos de python.
$ php artisan config:cache
================================================
Borrar la caché de ruta de su aplicación Laravel
================================================
Para borrar el caché de ruta de su aplicación Laravel, ejecute el siguiente
comando
$ php artisan route:clear
=============================
Borrar caché de configuración
=============================
Puede usar config:clear para borrar la caché de configuración de la aplicación
Laravel.
$ php artisan config:clear
=================================
Borrar caché de vistas compiladas
=================================
Además, es posible que deba borrar los archivos de vista compilados de su
aplicación Laravel. Para borrar los archivos de vista compilados, ejecute el
siguiente comando desde la terminal.
$ php artisan view:clear
=================================
Configurar Laravel con postgresql
=================================
Configurar base de datos de postgresql en el archivo .env:
DB_CONNECTION=pgsql
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=nombre_base_de_datos
DB_USERNAME=usuario_base_de_datos
DB_PASSWORD=contrasena_base_de_datos
=============================
Configurar Laravel con sqlite
=============================
1) Instalar el paquete de sqlite para php, dependiendo de la versión de php que
tengamos instalada.
# apt install php7.3-sqlite3
2) Crear un archivo database.sqlite en la ruta my_project/database.
my_project/database$ touch database.sqlite
3) Configurar el fichero .env, debemos poner la ruta absoluta de la db.
DB_CONNECTION=sqlite
APP_URL=http://127.0.0.1
DB_PORT=3306
DB_DATABASE=/home/user/my_project/database/database.sqlite
DB_USERNAME=homestead
DB_PASSWORD=secret
4) Una vez configurada el gestor de base de datos, realizamos las migraciones.
$ php artisan migrate
5) Levantar el servidor de desarrollo.
$ php artisan serve
====================================
Artisan CLI (Command Line Interface)
====================================
Artisan es el nombre de la interfaz de línea de comandos incluida con Laravel.
Proporciona una serie de comandos útiles para su uso mientras desarrolla su
aplicación. Está impulsado por el poderoso componente de la Consola Symfony.
===========================
Comandos de artisan y otros
===========================
Para conocer el listado completo de los comandos disponibles ejecutamos en
consola, en el directorio raíz de un proyecto de Laravel.
$ php artisan list
Comando disponibles:
clear-compiled Eliminar el archivo de clase compilado
db Iniciar una nueva sesión de CLI de base de datos
down Ponga la aplicación en modo de mantenimiento / demostración
dump-server Inicie el servidor de volcado para recopilar información de volcado
env Mostrar el entorno del actual del framework
help Muestra ayuda para un comando
inspire Muestra una cita inspiradora
list Lista de comandos de artisan
migrate Ejecute las migraciones de la base de datos
optimize Almacenar en caché los archivos de arranque del framework
serve Sirve la aplicación en el servidor de desarrollo PHP
test Ejecute las pruebas de la aplicación
tinker Interactuar con su aplicación
ui Swap the front-end scaffolding for the application
up Saque la aplicación del modo de mantenimiento
auditing
auditing:audit-driver Cree un nuevo controlador de auditoría
auditing:install Instale todos los recursos de auditoría
auth
auth:clear-resets Vacíe los tokens de restablecimiento de contraseña caducados
backup
backup:clean Elimine todas las copias de seguridad anteriores al número de días especificado en config.
backup:list Muestra una lista de todas las copias de seguridad.
backup:monitor Supervise el estado de todas las copias de seguridad.
backup:run Ejecute la copia de seguridad.
cache
cache:clear Vaciar la caché de la aplicación
cache:forget Eliminar un elemento de la caché
cache:table Crear una migración para la tabla de la base de datos de caché
config
config:cache Cree un archivo de caché para una carga de configuración más rápida
config:clear Eliminar el archivo de caché de configuración
countries
countries:update Actualizar todos los datos
db
db:seed Sembrar la base de datos con registros
db:wipe Eliminar todas las tablas, vistas y tipos
debugbar
debugbar:clear Borrar el almacenamiento de la barra de depuración
event
event:cache Descubrir y almacenar en caché los eventos y los oyentes de la aplicación.
event:clear Borrar todos los eventos y oyentes almacenados en caché
event:generate Genere los eventos y oyentes que faltan en función del registro
event:list Enumere los eventos y los oyentes de la aplicación
key
key:generate Establecer la clave de la aplicación
log-viewer
log-viewer:check Verifique todos los requisitos de LogViewer.
log-viewer:clear Borrar todos los archivos de registro generados
log-viewer:publish Publique todos los recursos y archivos de configuración de LogViewer
log-viewer:stats Muestra estadísticas de todos los registros.
make
make:cast Create a new custom Eloquent cast class
make:channel Create a new channel class
make:command Create a new Artisan command
make:component Create a new view component class
make:controller Create a new controller class
make:event Create a new event class
make:exception Create a new custom exception class
make:export Create a new export class
make:factory Create a new model factory
make:import Create a new import class
make:job Create a new job class
make:listener Create a new event listener class
make:mail Create a new email class
make:middleware Create a new middleware class
make:migration Create a new migration file
make:model Create a new Eloquent model class
make:notification Create a new notification class
make:observer Create a new observer class
make:policy Create a new policy class
make:provider Create a new service provider class
make:request Create a new form request class
make:resource Create a new resource
make:rule Create a new validation rule
make:seeder Create a new seeder class
make:test Create a new test class
migrate
migrate:fresh Elimine todas las tablas y vuelva a ejecutar todas las migraciones
migrate:install Crea el repositorio de migración
migrate:refresh Restablecer y volver a ejecutar todas las migraciones
migrate:reset Revertir todas las migraciones de bases de datos
migrate:rollback Revertir la última migración de la base de datos
migrate:status Muestra el estado de cada migración.
notifications
notifications:table Crea una migración para la tabla de notificaciones
optimize
optimize:clear Eliminar los archivos de arranque en caché
package
package:discover Reconstruir el manifiesto del paquete en caché
queue
queue:batches-table Create a migration for the batches database table
queue:clear Delete all of the jobs from the specified queue
queue:failed List all of the failed queue jobs
queue:failed-table Create a migration for the failed queue jobs database table
queue:flush Flush all of the failed queue jobs
queue:forget Delete a failed queue job
queue:listen Listen to a given queue
queue:prune-batches Prune stale entries from the batches database
queue:restart Restart queue worker daemons after their current job
queue:retry Retry a failed queue job
queue:retry-batch Retry the failed jobs for a batch
queue:table Create a migration for the queue jobs database table
queue:work Start processing jobs on the queue as a daemon
route
route:cache Cree un archivo de caché de ruta para un registro de ruta más rápido
route:clear Eliminar el archivo de caché de ruta
route:list Lista de todas las rutas registradas
schedule
schedule:list List the scheduled commands
schedule:run Run the scheduled commands
schedule:test Run a scheduled command
schedule:work Start the schedule worker
schema
schema:dump Volcar el esquema de base de datos dado
session
session:table Crear una migración para la tabla de la base de datos de la sesión
snapshot
snapshot:cleanup Specify how many snapshots to keep and delete the rest
snapshot:create Create a new snapshot.
snapshot:delete Delete a snapshot.
snapshot:list List all the snapshots.
snapshot:load Load up a snapshot.
storage
storage:link Create the symbolic links configured for the application
stub
stub:publish Publish all stubs that are available for customization
ui
ui:auth Scaffold basic login and registration views and routes
ui:controllers Scaffold the authentication controllers
vendor
vendor:publish Publish any publishable assets from vendor packages
view
view:cache Compile todas las plantillas Blade de la aplicación
view:clear Borrar todos los archivos de vista compilados
-----
Sacar la aplicación del modo de mantenimiento.
$ php artisan up
-----
Poner la aplicación en modo de mantenimiento.
$ php artisan down
-----
Para ver el listado completo de rutas, Como resultado nos mostrará un listado de
todas las rutas de la aplicación con la información sobre el método HTTP, la
URI, la acción, el nombre y los middleware definidos para cada ruta, con lo
cual, entre otras cosas, podemos verificar que todas las rutas de nuestra
aplicación están bien definidas.
php artisan route:list
-----
Mismo que el anterior pero más compacta la información.
$ php artisan route:list -c
-----
Mismo que el anterior pero especificando las columnas que quiero ver.
$ php artisan route:list --columns=uri,method
-----
Restablecer y volver a ejecutar todas las migraciones
$ php artisan migrate:refresh
-----
Omite los métodos down o los rollbacks eliminando todas las tablas para luego
ejecutar los métodos up.
$ php artisan migrate:fresh
-----
Actualice la base de datos y ejecute todas las semillas de la base de datos.
$ php artisan migrate:refresh --seed
-----
Quitar todas las tablas, migrar y cargar la base de datos con las semillas
$ php migrate artisan: fresh
$ php artisan migrate: fresh --seed
-----
El comando dump-autoload actualiza la información del cargador automático de
clases. Este comando es útil cuando añades nuevas clases y no quieres ejecutar
el comando install o update.
$ composer dumpautoload
-----
Con este comando Laravel compilará todos los paquetes que se encuentran en
node_modules y unificará los archivos que se encuentran en el directorio
resources/js y resources/sass a los archivos app.js y app.css respectivamente.
$ npm run dev
-----
Con este comando Laravel compilará todos los paquetes que se encuentran en
node_modules y unificará los archivos que se encuentran en el directorio
resources/js y resources/sass a los archivos app.js y app.css respectivamente.
$ npm run prod
Diferencias entre run dev y run prod
====================================
run dev: Compilar para desarrollo, los archivos resultantes mantienen el código
fuente desminificados. Las herramientas usadas en el navegador identifican los
objetos y componentes para poder depurar el código.
run prod -> compilar para producción, los archivos resultantes estan
minificados. Las herramientas de desarrollo usadas en el navegador no pueden
acceder a los componentes u objetos por lo que es complicado poder interactuar
con ellos a través del navegador.
-----
npm run dev combina todos sus componentes de Vue y otros archivos JavaScript en
un archivo combinado compatible con el navegador.
npm run watch hace lo mismo, pero luego permanece activo y "observa" las
actualizaciones de sus archivos .vue y .js. Si detecta un cambio, reconstruirá
el archivo compatible con el navegador para que pueda actualizar la página.
$ npm run watch
===============
Seed y Seeders
===============
Una manera de cargar datos en la base de datos es utilizando los Seeders de
Laravel.
Laravel incluye un método simple para sembrar su base de datos con datos de
prueba utilizando clases semilla (Seed). Todas las clases de semillas se
almacenan en el directorio database/seeds. Las clases de semillas pueden tener
el nombre que desee, pero probablemente deberían seguir alguna convención
razonable, como nombretablaSeeder, etc. De manera predeterminada, se define una
clase DatabaseSeeder para usted. Desde esta clase, puede utilizar el método de
llamada para ejecutar otras clases semilla, lo que le permite controlar el orden
de siembra.
Aplicar un seeder específico
============================
Se puede aplicar un seeder de maner individual con el siguiente comando:
$ php artisan db:seed --class NombreDelSeeder
Crear un seeder
===============
$ php artisan make:seeder CategoriesSeeder
Esto nos creará un archivo en la carpeta database/seeds/ que tendrá el nombre
que le demos en el comando.
Así se ve CategoriesSeeder.php
<?php
use Illuminate\Database\Seeder;
class CategoriesSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//
}
}
Con esto ya tenemos el archivo pero no es todo lo que necesitamos para poder
trabajar con datos autogenerados, para ello usaremos un componente llamado Faker
el cual se encargará de generar estos datos, Faker viene instalado por defeto
en Laravel.
Vamos al archivo CategoriesSeeder y dentro podremos observer que se encuentra
una función llamada run() que es donde nosotros vamos a usar Faker para poblar
la base de datos o la tabla específica, ahora bien antes de todo debemos agregar
la clase de Faker a nuestro Seeder, para esto agregamos al inicio del archivo la
linea:
use Faker\Factory as Faker;
Quedaría el archivo así:
<?php
use Illuminate\Database\Seeder;