"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué aparece el "error de intentar obtener atributos no objeto" al acceder a un nombre de usuario en un artículo de Laravel 5 News?

¿Por qué aparece el "error de intentar obtener atributos no objeto" al acceder a un nombre de usuario en un artículo de Laravel 5 News?

Publicado el 2025-04-14
Navegar:429

Why am I Getting

No se puede acceder a la propiedad del objeto - laravel 5

emisión descripción

[&]] un intento de hacer eco del nombre de un usuario de un artículo de noticias está fallando, resultando en el siguiente error:

errorexception: intentando obtener la propiedad de no objeciones
ErrorException: Trying to get property of non-object

modelos

class News extiende el modelo { función pública publicada () { devolver $ this-> pertenecersto ('app \ user'); } } El usuario de la clase extiende el modelo { protegido $ Fillable = ['Nombre', ...]; }

class News extends Model
{
    public function postedBy()
    {
        return $this->belongsTo('App\User');
    }
}

class User extends Model
{
    protected $fillable = ['name', ...];
}
Schema

Table: users with a 'name' column
  • Table: news with a 'postedBy' column linking to users
Controller

public function showArticle ($ Slug) { $ Artículo = News :: Where ('Slug', $ Slug)-> FirstorFail (); View de retorno ('Artículo', Compact ('Artículo')); }

public function showArticle($slug)
{
    $article = News::where('slug', $slug)->firstOrFail();
    return view('article', compact('article'));
}
blade template

{{$ Artículo-> publicado-> name}}

explicación
public function showArticle($slug)
{
    $article = News::where('slug', $slug)->firstOrFail();
    return view('article', compact('article'));
}
el error ocurre porque la consulta en el controlador (News :: Where ('Slug', $ slug)-> matriz, no un objeto. Al intentar acceder -> publicado en una matriz, la propiedad no se reconoce y se lanza el error.

para resolver el problema, debe convertir la matriz a un objeto antes de acceder a la propiedad de -> publicado. Esto se puede hacer utilizando el método FindBysLug en el modelo de noticias en lugar de FirstorFail ():

Función pública showAtticle ($ Slug) { $ Artículo = News :: FindBysLug ($ Slug); // Devuelve un objeto View de retorno ('Artículo', Compact ('Artículo')); }

Esto le permitirá acceder con éxito a la propiedad -> publicado en el objeto y mostrar el nombre del usuario en la plantilla de cuchilla.
            
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3