vengo del futuro, en mi año ya existe la carpeta model(minuto 2:50), saludos
Introducción
Intro y caracteristicas de Laravel
Fundamentos
Instalación de Laravel
Primer ruta en laravel
Cómo funciona Blade
Controladores en Laravel
Request
Configuración de laravel
Bases de Datos
Cómo funcionan las Migraciones de DB
Migraciones en Artisan
Modelos con Eloquent
Trabajando con un Modelo
Operaciones CRUD
Controladores y recursos
Blade layout
Form para agregar reportes
CSRF
Fake PUT/PATCH
Borrando reportes
Validaciones
Relaciones en bases de datos
Creamos la vista de reportes
Relaciones con eloquent
Trabajando con relaciones
Emails
Acción para enviar un mail
Enviando emails
Autenticación
Login
Cierre
Cierre
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Héctor Benitez
Un ORM es un sistema que nos permite mapear registros de la base de datos a objetos dentro de nuestro código. No es exclusivo de PHP ya que se usa mucho en los lenguajes de programación orientada a objetos.
Aportes 49
Preguntas 7
vengo del futuro, en mi año ya existe la carpeta model(minuto 2:50), saludos
Bueno me toco ver el vídeo como tres veces para poder comprender mejor para q sirve todo este tema de las migraciones y Thinker.
depende de la version viene una carpeta llamada Models
comando tinker
App\Models\ExpenseReport::all()
En la version 8 ya tenemos la carpeta Models.
Apuntes:
Eloquent es el ORM (Objet Relational Model) de Laravel, el cual nos va a permitir trabajar con los modelos del paradigma. Para crear un modelo en Laravel, nos vamos al CMD y escribimos:
Un comentario al video, no es convencion, ni ningun estandar, que los nombres en DB sean en singular o plural, hay mucha controversia sobre el tema, sin embargo no hay nada que diga que debas hacerlo de una u otra forma, a menos que sea una convencion unica de PHP.
Por otra parte, a mi NO me gusta el nombre en plural de las tablas, porque, a pesar de que una tabla tecnicamente almacena multiples records o rows, se supone que el nombre de la tabla representa una entidad en la tabla, es decir una persona, una orden, etc…
Miralo de esta forma, cuando retornas un row de una tabla llamda “command”, cuando haces referencia a los campos seria algo asi…
SELECT command.name, command.code FROM command WHERE id = 12;
En caso contrario seria algo como…
SELECT commands.name, commands.code FROM commands WHERE id = 12;
Una ventaja es que de esta forma el modelo y la tabla, mantienen el mismo nombre, otro punto a favor, es que los metodos de los ORM (Sequelize, Hibernate, Django, etc), no se llaman, Models.find() (siendo Models un modelo cualquiera en plural) el cual te trae muchos records de DB, al contrario, tienen un nombre como “findAll”, lo cual, seria redundante (al menos para mi) en plural, “Models.findAll()”.
Lo que quiero dejar en claro con esto, es que no hay una forma correcta de hacerlo, cada una tiene sus ventajas y desventajas con respecto a sintaxis.
https://dba.stackexchange.com/questions/13730/plural-vs-singular-table-name
como sabe Eloquent que la tabla que le corresponde al modelo ExpenseReport es expense_reports ?
2021 ya existe la carpeta models
En laravel 8 o 9 :
$report = new App\Models\ExpenseReport();
$report->save();
$report = new App\Models\ExpenseReport();
2022 ya tenemos la carpeta model
Les recomiendo una lectura rapida sobre como funciona Eloquent
Quedo muy satisfecho con esta clase, no conocía del uso de Tinker
Sí me aparece la carpeta: Models, dentro del folder: app
Cuando creamos las bases de datos es estándar que las tablas tengan el nombre en PLURAL pero los modelos como representan una clase que representa un objeto, tendrán su nombre en SINGULAR.
Este video explica muy bien los temas que abarca, recomiendo tener cuidado al usar models con sus respectivas tablas, recuerden que la tabla lleva una s al final y el model no
Notas:
Comando Make:model permite crear modelos eloquent
Es recomendable crear las tablas de las bases de datos en plural ya que almacenaran varios objetos y los modelos en singular puesto que se hace referencia al modelo de un objeto
Comando tinker nos permite crear una especie de sandbox para evaluar el comportamiento de las clases.
Sin duda uno de los mejores cursos de Platzi.
Estoy intentando usar Tinker pero las teclas de flecha no me funcionan. Estoy usando un Mac.
¿A alguien le ha ocurrido lo mismo?
muchas gracias
App\Models\expenseReport::all();
La Carpeta Models ya existe…
Me daba error…
A mí me creo cursolaravel.table_expense_reports en vez de cursolaravel.expense_reports
Buena clase Hector
se repite la palabra “dentro” en la primera y segunda linea de la descripción.
Muy buena la clase hasta ahora me ha gustado mucho el curso e Laravel, muy interesante este FrameWork…
Mi función quedo así:
public function index()
{
//return ExpenseReport::all();
return view('ExpenseReport.index', [
'ExpenseReports' => ExpenseReport::all(),
'title' => 'Expense Report'
]);
}
El titulo igualmente lo envíe dinamicamente por si cambia en el futuro,
En el view lo llamo {{ $title }}
Excelente la herramienta TInker
tinker nos ofrece una especie de entorno de pruebas como sandbox donde podemos ver como esta funcionando el código y las cosas que vamos haciendo.
Muy buena esta herramienta se ve muy util!!
Illuminate/Database/QueryException with message ‘SQLSTATE[42P01]: Undefined table: 7 ERROR: no existe la relación «expense_reports»
LINE 1: insert into “expense_reports” (“updated_at”, “created_at”) v…
^ (SQL: insert into “expense_reports” (“updated_at”, “created_at”) values (2020-04-07 19:43:55, 2020-04-07 19:43:55) returning “id”)’
Muy buena clase, muchas gracias 😄
Funciono perfectamente ❤️
Pregunta!!
Como sabe laravel que mi clase ExpenseReport esta asociada a mi migración create_table_expense_report ya que no vi ningún tipo de configuración, mas que en la similitud del nombre
Tinker es una consola de comandos con la que podremos interactuar con todas las clases y métodos de nuestra aplicación, una herramienta muy útil a la hora de realizar pruebas de funcionamiento.
Se que suena como si fuese una forma tan sencilla de tener una BD relacionales, pero soy de la vieja escuela en donde tu crear las tablas, los campos e insertar registros mediante un Query, porque tinker hace todo internamente y solo pones los datos a llenar, y por que hacer un migrate luego modelo, me confunde.
En menos de un días se puede conocer las bases de Laravel y hacer un ejemplo funcional, una clase muy bien sintetizada para personas que conocen algo de Php y tiene bases de Prog Orientada a Objetos
Si sigo la recomendación que sugiere Laravel sobre almacenar los modelos directamente en la carpeta app así como se menciona en el minuto 2:45 ¿Habrá problemas de desorden cuando la cantidad de modelos que se tenga sea muy grande o existe alguna otra recomendación en esos casos?
En caso de que les aparezca el siguiente error al momento de realizar la migración:
Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1 Cannot add a NOT NULL column with default value NULL (SQL: alter table "expense_reports" add column "title" text not null)
Se puede solucionar permitiendo que la columna title tenga valores nulos:
public function up() { Schema::table('expense_reports', function (Blueprint $table) { $table->text('title')->nullable(); }); }
ExpenseReport::all() viene siendo lo q’ podríamos llamarle el modelo???
Huy la verdad primera clase q’ quedo un poco Azul, no entendí muy bn q’ se hace con esta opción “Eloquent” espero mas adelante podamos comprender bn en q’ consiste esto y la forma de usarlo.
se hace todo mas sencillo usando laravel que php puro, pero se siente como si se le quitara trabajo al desrrollador !
Para los que estéis usando tinker y al ejecutar alguna instrucción se os salga de la consola de tinker, tenéis que crear un archivo config.php en el directorio
~/.config/psysh/config.php
con el siguiente contenido:
<?php
return [
'usePcntl' => false,
];
Esto os pasará si estáis usando la versión de PHP 7.3 en MacOs Mojave, e instalasteis usando brew.
En mi caso siguiendo los pasos no creo la tabla en la base de datos, entonces obte por el comando php artisan migrate, entonces si la creo y se logro hacer los reportes
tinker sirve para ejecutar cualquier cosa de php ahi aveces sirve para probar algunas cosas sin tener que andar haciendo clases
A partir de la versión 8, Laravel ya incluye la carpeta App\Models.
Efectivamente siempre es bueno manejar el código en inglés (Además que se ve más elegante xD) Pero igual por buenas prácticas.
Como dato curioso, en Laravel 8 los modelos ya están de vuelta en la carpeta Models… cosas de Laravel
que bueno es conocer mas herramientas manejaba Laravel pero no conocía de Tinker
cuidado con el comando en tinker y su sensibilidad a las mayusculas.
App\expenseReport::all()
v v v v v v v v v v v v v v
App\ExpenseReport::all()
Como es que Laravel sabe a que Tabla hacemos referencia creando un model de eloquent?
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?