Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

385
Vistas
Laravel 5.8: Intentando obtener la propiedad 'created_at' de un no objeto

Estoy usando Laravel 5.8 para desarrollar mi proyecto y en este proyecto, tengo una relación OneToMany entre el modelo de Member y el modelo de Student como esta:

Student.php :

 public function member() { return $this->belongsTo(Student::class, 'std_mbr_id'); }

Member.php :

 public function student() { return $this->hasOne(Student::class,'std_mbr_id'); }

Luego, en el controlador, agregué esto:

 public function index() { $student = new Student(); $students = $student->searchStudents()->paginate(20); $custom = new Student(); $customs = $custom->all(); return view('admin.students.custom', compact('students','customs')); }

Ahora, en la vista, quiero obtener created_at timestamp de esta manera:

$customs->find($student->mbr_id)->created_at

Pero esto devolverá este error:

Intentando obtener la propiedad 'created_at' de un no objeto

Sin embargo, cuando hago dd($customs->find($student->mbr_id)) , puedo obtener correctamente las marcas de tiempo:

ingrese la descripción de la imagen aquí

Entonces, ¿cómo acceder a la marca de tiempo created_at en esta situación?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Hay muchas posibilidades de arrojar `errores no relacionados con el objeto.

En primer lugar, asegúrese de haber agregado la clave principal en el modelo de Student .

protected $primaryKey = 'std_id';

En segundo lugar, si pasó mal $student->mbr_id en el método find() y accedió directamente a columnas específicas, arrojará un error:

Por favor verifique en su archivo blade si existe registro o no:

 @if($customs->find($student->smbr_id)) {{ $customs->find($student->smbr_id)->created_at }} @endif

Espero que lo entiendas y lo soluciones.

over 4 years ago · Santiago Trujillo Denunciar

0

¿Por qué no aprovechar la propiedad de relación dinámica de Eloquent (consulte https://laravel.com/docs/8.x/eloquent-relationships#one-to-many-inverse ) y usar

 $student->member->created_at
over 4 years ago · Santiago Trujillo Denunciar

0

find() funciona con la clave principal, que es std_id en este caso. Entonces, para trabajar con otro campo, debes hacer

 $customs->where('std_mbr_id', $student->mbr_id)->first()->created_at
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda