CursosEmpresasBlogLiveConfPrecios
Curso de PHP con Laravel

Trabajando con relaciones

Curso de PHP con Laravel

Contenido del curso

Introducción

  • 1
    Intro y caracteristicas de Laravel

    Intro y caracteristicas de Laravel

    03:09 min

Fundamentos

  • 2
    Instalación de Laravel

    Instalación de Laravel

    06:48 min
  • 3
    Primer ruta en laravel

    Primer ruta en laravel

    06:14 min
  • 4
    Cómo funciona Blade

    Cómo funciona Blade

    08:30 min
  • 5
    Controladores en Laravel

    Controladores en Laravel

    07:23 min
  • 6
    Request

    Request

    06:10 min
  • 7
    Configuración de laravel

    Configuración de laravel

    05:07 min

Bases de Datos

  • 8
    Cómo funcionan las Migraciones de DB

    Cómo funcionan las Migraciones de DB

    07:00 min
  • 9
    Migraciones en Artisan

    Migraciones en Artisan

    05:28 min
  • 10
    Modelos con Eloquent

    Modelos con Eloquent

    06:19 min
  • 11
    Trabajando con un Modelo

    Trabajando con un Modelo

    07:48 min

Operaciones CRUD

  • 12
    Controladores y recursos

    Controladores y recursos

    14:08 min
  • 13
    Blade layout

    Blade layout

    05:46 min
  • 14
    Form para agregar reportes

    Form para agregar reportes

    07:35 min
  • 15
    CSRF

    CSRF

    08:21 min
  • 16
    Fake PUT/PATCH

    Fake PUT/PATCH

    10:58 min
  • 17
    Borrando reportes

    Borrando reportes

    11:21 min
  • 18
    Validaciones

    Validaciones

    12:07 min

Relaciones en bases de datos

  • 19
    Creamos la vista de reportes

    Creamos la vista de reportes

    06:44 min
  • 20
    Relaciones con eloquent

    Relaciones con eloquent

    13:17 min
  • 21
    Trabajando con relaciones

    Trabajando con relaciones

    Viendo ahora

Emails

  • 22
    Acción para enviar un mail

    Acción para enviar un mail

    08:32 min
  • 23
    Enviando emails

    Enviando emails

    14:04 min

Autenticación

  • 24
    Sistema de autenticación en Laravel

    Sistema de autenticación en Laravel

    09:38 min

Cierre

  • 25
    Cierre

    Cierre

    01:09 min
Tomar examen

Trabajando con relaciones

Resumen

Comenzaremos a usar tablas relacionadas

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads

      Comentarios35

      Paul Cortes

      Paul Cortes

      Estudiante
      Hace 6 años
        Felix Michael Hernandez Flery

        Felix Michael Hernandez Flery

        Estudiante
        Hace 6 años
        Jhonathan Alfonso

        Jhonathan Alfonso

        Estudiante
        Hace 6 años
      Jimmy Buriticá Londoño

      Jimmy Buriticá Londoño

      Estudiante
      Hace 6 años
      Javier Andrés Poduje Alegría

      Javier Andrés Poduje Alegría

      Estudiante
      Hace 7 años
        German Sayago

        German Sayago

        Estudiante
        Hace 7 años
        KEVIN BRAYAN LUNA FIGUEROA

        KEVIN BRAYAN LUNA FIGUEROA

        Estudiante
        Hace 7 años
      Geraldin Valencia Valencia

      Geraldin Valencia Valencia

      Estudiante
      Hace 7 años
        Paolo Restuccia Restuccia

        Paolo Restuccia Restuccia

        Estudiante
        Hace 7 años
        Esteban Cabrera Gómez

        Esteban Cabrera Gómez

        Estudiante
        Hace 7 años
      Sergio Andrés Martínez Ramírez

      Sergio Andrés Martínez Ramírez

      Estudiante
      Hace 6 años
        Franz Eduardo Tejada Valencia

        Franz Eduardo Tejada Valencia

        Estudiante
        Hace 5 años
        Omar Villafuerte

        Omar Villafuerte

        Estudiante
        Hace 5 años
      Sebastian Almiron

      Sebastian Almiron

      Estudiante
      Hace 7 años
      Jonathan De Jesus Meneses Marquez

      Jonathan De Jesus Meneses Marquez

      Estudiante
      Hace 6 años
        Sergio Veloza

        Sergio Veloza

        Estudiante
        Hace 6 años
        Sergio Veloza

        Sergio Veloza

        Estudiante
        Hace 6 años
      Enrique Garcia Stave

      Enrique Garcia Stave

      Estudiante
      Hace 6 años
      Jairo Noguera

      Jairo Noguera

      Estudiante
      Hace 7 años
      Mauro Páginas Web

      Mauro Páginas Web

      Estudiante
      Hace 7 años
        Moisés Cedeño

        Moisés Cedeño

        Estudiante
        Hace 7 años
        Kenneth Angulo L

        Kenneth Angulo L

        Estudiante
        Hace 4 años
      Cesar Nilton Rojas Valero

      Cesar Nilton Rojas Valero

      Estudiante
      Hace 5 años
        Mariano Costantino

        Mariano Costantino

        Estudiante
        Hace 5 años
      Erik Antillanca

      Erik Antillanca

      Estudiante
      Hace 7 años
        Alfonso Navarro

        Alfonso Navarro

        Company_admin
        Hace 7 años
        jean pierre gabriel nieto acosta

        jean pierre gabriel nieto acosta

        Estudiante
        Hace 7 años
      Benny Franco

      Benny Franco

      Estudiante
      Hace 7 años
        Félix Andersson

        Félix Andersson

        Estudiante
        Hace 7 años
      Jeison Daniel Torres Benavides

      Jeison Daniel Torres Benavides

      Estudiante
      Hace 4 años
        Kenneth Angulo L

        Kenneth Angulo L

        Estudiante
        Hace 4 años
      Noelia Iglesias Martínez

      Noelia Iglesias Martínez

      Estudiante
      Hace 7 años
        Moisés Cedeño

        Moisés Cedeño

        Estudiante
        Hace 7 años
        Fran Delgado

        Fran Delgado

        Estudiante
        Hace 7 años
      Brandon Pineda

      Brandon Pineda

      Estudiante
      Hace 4 años
        Kenneth Angulo L

        Kenneth Angulo L

        Estudiante
        Hace 4 años
      Enrique Garcia Stave

      Enrique Garcia Stave

      Estudiante
      Hace 6 años
        Germán QL

        Germán QL

        Estudiante
        Hace 6 años
      Alejandro Atria

      Alejandro Atria

      Estudiante
      Hace 2 años
      Kenneth Angulo L

      Kenneth Angulo L

      Estudiante
      Hace 4 años
      Usuario anónimo

      Usuario anónimo

      User
      Hace 7 años
        Lorena Pena Verdú

        Lorena Pena Verdú

        Estudiante
        Hace 7 años
        Daniel Hurtado

        Daniel Hurtado

        Estudiante
        Hace 7 años

      Hasta video espere que explicaran las relaciones en Eloquent que es como se deben de hacer según la documentacion, realmente queda haciendo falta para crear algo de calidad, lo mínimo necesario para el almacenamiento de datos y lo mas importante su integridad,

      Link a la documentacion, por ejemplo en este proyecto se debió haber usado:

      • foreign
      • dropForeign Example:
      class AddExpensesToExpenseReport extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('expenses', function (Blueprint $table) { $table->foreign('expense_report_id')->references('id')->on('expense_reports'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('expenses', function (Blueprint $table) { $table->dropForeign(['expense_report_id']); }); } }

      👍 Excelente aporte!!

      Gracias bro!

      Al archivo ExpenseController.php debes adicionar las siguientes líneas:

      use App\ExpenseReport; use App\Expense;

      Validación de Expenses en la función store:

      • description: Requerida y con al menos tres caractéres.
      • amount: requerida, número entero y positivo.
      public function store(Request $request, ExpenseReport $expenseReport) { $validaData = $request->validate([ 'description' => 'required|min:3', 'amount' => 'required|integer|min:1' ]); $expense = new Expense(); $expense -> description = $request -> get('description'); $expense -> amount = $request -> get('amount'); $expense -> expense_report_id = $expenseReport -> id; $expense -> save(); return redirect('/expense_reports/' . $expenseReport->id); }

      en amount usaría “numeric”, sino no se puede colocar decimales

      @germansayago como dices mejor si, se utiliza numeric

      8:32 , de igual manera como lo hiciste con ExpenseReportController, olvidaste poner use App\ExpenseReport; en el controlador ExpenseController, lo que causa este error cuando intentas crear un nuevo expense. "Class App\Http\Controllers\ExpenseReport does not exist". Agregando ese use en el controlador Expense, se soluciona, por si le sucede a alguien más.

      Si, lo noté también. Sabes que sucede, que entiendo que PHP Storm agrega automáticamente esa línea cuando se escribe esa clase dentro de la acción.

      Según el ID y los plugins instalados, cuando agregas un controlles u otro elemento, estas llamadas se agregan automáticamente en el inicio del archivo

      En los casos que sea necesario usar un modelo padre, como en este ejercicio, la forma en como se organiza el controlador y las rutas tiene un nombre y se llama Controladores de recursos anidados, y Laravel también nos provee una forma de crear controladores de recursos anidados de una manera super fácil.

      Sólo debemos especificar la variable parent para indicar cuál es el padre y el nombre del modelo con el cual está asociado.

      si ejecutas _**php artisan make:controller --help **_podrás ver estas opciones

      -m, --model[=MODEL] Generate a resource controller for the given model. -p, --parent[=PARENT] Generate a nested resource controller class.

      Para este caso podemos crear nuestro recurso anidado usando el siguiente comando:

      php artisan make:controller -r -m Expense -p ExpenseReport ExpenseController

      Igualmente podemos matricular nuestras rutas como tipo recurso y usar la funcionalidad de excluir las rutas que no necesitamos o de incluir solo las rutas que vamos a usar.

      Route::resource('expense_reports.expenses','ExpenseController')->only(['create','store']);

      Y finalmente en los formularios podemos hacer el llamado a las rutas con el nombre que corresponden:

      Vista show.blade.php de expenses_reports. Para llamar al método create:

      <a class="btn btn-primary" href="{{ route('expense_reports.expenses.create',['expense_report' => $report->id]) }}">New expense</a>

      Vista create.blade.php de expenses. Para llamar al método store:

      <form action="{{ route('expense_reports.expenses.store',['expense_report' => $report->id]) }}" method="POST">

      Fue de gran ayuda, gracias.

      Excelente aporte sin dudas!

      Para los que quieran tener las validaciones en español les dejo un link validation en espanol

      Me sucede esto:

      Class App/http/Controllers/ExpenseReport does not exist

      pero el controller si está creado :( Help me !

      Hola!

      Para solucionar debes agregar

      use App\ExpenseReport;

      en la parte inicial de tu ExpenseController.php o el controlador que estés usando

      Si por alguna razón te muestra un error tipo Undefined variable “como a mi”, para solucionar debes agregar

      use App\Expense;

      en la parte inicial de tu ExpenseController.php o el controlador que estés usando

      Apuntes: Añadimos un nuevo controlador tipo recurso para la nueva clase (y entidad) creada: - php artisan make:controller --resource ExpenseController Luego en la vista show, creamos un enlace hacia la creacion de nuevos formularios: - <a href="/expense_reports/{{ $report->id }}/expenses/create"> Luego se proceden a configurar las rutas: -Route::get('/expense_reports/{expense_report}/expenses/create', 'ExpenseController@create');

      • Route::get('/expense_reports/{expense_report}/expenses', 'ExpenseController@store'); Consecuentemente se empieza creando una carpeta nueva en views con los archivos de las nuevas rutas y luego se procede configurando el método create del controlador nuevo.

      Me genero errores la carga de los expense, si le pasa lo mismo únicamente deben de agregar la ruta "use App\ExpenseReport"; en la parte superior del código en el controlador

      Cuando voy a submit, del formulario expense me sale este error:

      Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException The POST method is not supported for this route. Supported methods: GET, HEAD. http://127.0.0.1:8000/expense_reports/2/expenses

      Tú problema está en la ruta que estás usando para guardar los detalles del Expense. Recuerda que estás usando el método post, por lo tanto en tus routes.php debes tenerlo definido como:

      Route::post('/expense_reports/{expense_report}/expenses','ExpenseController@store');

      En donde, post es el método que estás usando y que estás enviadno desde tu formulario, me comentas, espero te sirva.

      Confirma que estes llamando correctamente al modelo, inmediatamente despues del namespace asi:

      use App\Models\ExpenseReport;

      Para solucionar el error: " Target class [ExpenseController] does not exist. " en Laravel 8, tomar en cuenta que en routes>web.php, debe quedar de la siguiente manera:

      .... use App\Http\Controllers\ExpenseController; .... Route::get('/expense_reports/{expense_report}/expenses/create', [ExpenseController::class, 'create']); Route::post('/expense_reports/{expense_report}/expenses', [ExpenseController::class, 'store']);

      Te agrego que en mi caso tuve que incorporar al inicio del ExpenseController.php

      use App\Models\ExpenseReport; use App\Models\Expense;

      Saludos

      Tengo un problema, en create ni en store me reconoce el parametro ExpenseReport $expenseReport en las funciones para obtener luego el id, a que puede deberse? en la primeras lineas del archivo tengo puesto tanto use App\Expense como App\ExpenseReport

      Hola @eantillanca por favor coloca un ejemplo de tu codigo para poder ayudarte.

      yo tenia el mismo problema. No se como lo resolvi (jajajaja) aqui te dejo mi codigo para que lo veas, tal vez te sea de ayuda

      <?php namespace App\Http\Controllers; use App\ExpenseReport; use App\Expense; use Illuminate\Http\Request; class ExpensesController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { // } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create(ExpenseReport $expenseReport) { return view('expenses.create' , [ 'report' => $expenseReport ]); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request, ExpenseReport $expenseReport) { $expense = new Expense(); $expense->description = $request->get('description'); $expense->amount = $request->get('amount'); $expense->expense_report_id = $expenseReport->id; $expense->save(); return redirect('expense_reports/' . $expenseReport->id); }

      Solución reto, validación amount y description en Expenses

      public function store(Request $request, ExpenseReport $expenseReport) { $expense = new Expense(); $validData = $request->validate([ 'description' => 'required|min:3', 'amount' => 'required|numeric' ]); $expense->description = $validData['description']; $expense->amount = $validData['amount']; $expense->expense_report_id = $expenseReport->id; $expense->save(); return redirect('/expense_reports/' . $expenseReport->id); }

      Bien lo de validar amount como numeric pero te falta validar el rango del número, te quedaría

      'amount' => 'required|numeric|between:0,999999.99'

      Tengo un problema, en el método store no me reconoce el parametro ExpenseReport $expenseReport en la función para obtener luego el id. ¿Qué podrá ser?

      Confirma que estes llamando correctamente al modelo, inmediatamente despues del namespace asi:

      use App\Models\ExpenseReport;

      Se puede crear un archivo de migración a partir de la base de datos? Es que tengo una echa y la quiero utilizar aquí.

      En este caso bastaría con configurar el nombre de tu base de datos en tu archivo .env.

      Cambias:

      DB_DATABASE=miBaseDeDatos

      **Por: **

      DB_DATABASE=miNuevaBaseDeDatos

      Allí le seteas el nombre de tu base de datos y ya estaría usando tu base de datos. Aún así necesitas crear los modelos para poder conectarte a cada una de las tablas de tu db.

      Recuerda que cada vez que realizas cambios en el archivo .env debes correr los comandos:

      php artisan cache:clear php artisan config:cache

      Espero te sea de ayuda.

      Puedes hacer con el paquete Xethron/migrations-generator. Cuidado porque parece que de momento no tiene soporte para Laravel 6!

      Tengo este problema al tratar de mostrar los datos en el show

      ErrorException Trying to get property 'description' of non-object (View: C:\laragon\www\proyecto_laravel\resources\views\

      El problema se genera en la vista, estas haciendo algo como esto:

      {{ $objeto->description }}

      El error te esta indicando que no puede encontrar una propiedad description

      Posiblmente porque no estas pasando el objeto correctamente, confirma que desde el controlador estes pasando el objeto con el mismo nombre que la vista espera recibir.

      asi:

      $objeto = 'aqui estas indicando que objeto pasar'; return view('nombre_vista', compact('objeto'));

      Y en ultima instancia puede ser tambien que no estes pasando un objeto sino un arreglo, eso suele suceder tambien.

      Hola, una pregunta: ¿Por qué en las ruta de create de Expense se pone como parámetro de envío {expense_report} y no la variable {id}?

      Porque la variable $id la "guarda" para el ámbito local de la clase Expense, es decir, la clase Expense también tiene su propio $id y como está en dicha clase, es mejor manejar el MODEL BINDING

      No sé si en el curso faltó comentar o yo no escuché que el Model Binding ocupa una "type-hinted variable". Aunque veo que a muchos les ha pasado lo mismo que a mí.

      Para que esta variable entienda que debe buscar una coincidencia del modelo con lo que llega en una variable, el nombre de la variable DEBE coincidir con el nombre de la variable de la ruta.

      Es decir: si en la ruta "/foo/{bar}/baz" esperas que "bar" sea traducido a un modelo por el model binding, en el controlador el nombre de la variable DEBE ser $bar. public function create (Model $bar) Sólo de esa manera laravel entiende que la variable bar se debe buscar dentro del modelo Model.

      Comparto la tarea, validar campos de la vista expense.create

      reto-validar.png

      Alguien me podria ayudar con este error porfavor:

      error2.png

      Este error me sale cuando doy click a submit del new expense

      Comprueba que hayas copiado la vista de create y no la de edit, porque a mí me dio ese error en unas clases atrás creando esa vista, y era porque necesitaba poner un campo oculto con el método put. Pero en esta clase no ha usado el método PUT en ningún momento, entonces igual es por eso, no lo sé.

      Si pones una captura del código de la vista de create expense será más fácil echarte una mano!! :)

      Verifica la dirección que tienes colocada en el form