Я пытаюсь ErrorException: Trying to get property of non-object
имя пользователя в моей статье, и я получаю ErrorException: Trying to get property of non-object
. Мои коды:
модели
1. News class News extends Model { public function postedBy() { return $this->belongsTo('App\User'); } protected $table = 'news'; protected $fillable = ['newsContent', 'newsTitle', 'postedBy']; } 2. User class User extends Model implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract { use Authenticatable, Authorizable, CanResetPassword; protected $table = 'users'; protected $fillable = ['name', 'email', 'password']; protected $hidden = ['password', 'remember_token']; }
схема
users
таблицы
news
таблицы
контроллер
public function showArticle($slug) { $article = News::where('slug', $slug)->firstOrFail(); return view('article', compact('article')); }
лопасть
{{ $article->postedBy->name }}
Когда я пытаюсь удалить имя в {{ $article->postedBy }}
он выводит id
, но когда я пытаюсь добавить имя -> там, он говорит, что пытается Trying to get property of non-object
но у меня есть name
поля в моей таблице и модели User
. Я что-то упускаю?
Является ли ваш запрос возвратом массива или объекта? Если вы сбросите его, вы можете обнаружить, что это массив, и все, что вам нужно, это доступ к массиву ([]) вместо доступа к объекту (->).
Я заработал, используя ответ Джимми Зото и добавив второй параметр к моему belongsTo
. Вот:
Во-первых, как предложил Джимми Зото, мой код в $article->poster->name
от $article->poster->name
до $article->poster['name']
. Далее следует добавить второй параметр в my belongsTo
, from return $this->belongsTo('App\User');
вернуть $this->belongsTo('App\User', 'user_id');
в котором user_id
является моим внешним ключом в таблице новостей.
Спасибо за вашу помощь!