Problemă
Încerc să redau numele utilizatorului în articolul meu și primesc ErrorException: Trying to get property of non-object
. Codurile mele:
Modele
1. Știri
clasăȘtirise extindeModel
{
public funcţiePostat de()
{
întoarcere $ asta->aparține lui(„Aplicație Utilizator”);
}
protejat $ masa = 'știri';
protejat $ completabil = [„newsContent”, 'newsTitle', 'Postat de'];
}
2. Utilizator
clasăUtilizatorse extindeModelunelteAuthenticatableContract,
AuthorizableContract,
CanResetPasswordContract
{
utilizareAutenticabil,Autorizabil,CanResetPassword;
protejat $ masa = „utilizatori”;
protejat $ completabil = ['Nume', 'e-mail', 'parola'];
protejat $ ascuns = ['parola', 'remember_token'];
}
Controlor
public funcţieshowArticle($ slug){
$ articol =Știri::Unde('melc', $ slug)->firstOrFail();
întoarcerevedere('articol', compact ('articol'));
}
Lamă
{{ $ articol->Postat de->Nume }}Când încerc să elimin numele din lama {{ $article->postedBy }}
generează id
, dar când încerc să adaug numele -> acolo scrie Trying to get property of non-object
dar am un nume de câmp în tabelul meu și un User
model. Am pierdut ceva?
Soluţie
Interogarea dvs. returnează matrice sau obiect? Dacă îl eliminați, s-ar putea să descoperiți că este o matrice și tot ce aveți nevoie este un acces la matrice ([]) în loc de un acces la obiect (->).
A doua opinie
$ articol->poster->Numela
$ articol->poster['Nume']Următorul este să adaug un al doilea parametru în apartenența mea la, de la
întoarcere $ asta->aparține lui(„Aplicație Utilizator”);
la
întoarcere $ asta->aparține lui(„Aplicație Utilizator”, 'numele de utilizator');în care user_id
este cheia mea străină în tabelul de știri.