8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravelで、Trying to get property of non-object と出たときの2つの解決策

Last updated at Posted at 2020-11-02

エラー内容

belongsToでboardsテーブルからpeopleテーブルのレコードを取り出したいときに、Trying to get property of non-objectというエラーが出て解決に時間がかかったので共有します。

対象のソース

Board.php
public function person()
{
    return $this->belongsTo('App\Person');
}

public function getData()
{
    return $this->id . ': ' . $this->title . ' (' . $this->person->name . ')';
}

これだとBoardクラスのgetDataメソッドの中の「$this->person」がnullで返る場合にTrying to get property of non-objectとなります。

解決策1

optional()メソッドを使う。

Board.php
public function getData()
    {
        return $this->id . ': ' . $this->title . ' (' . optional($this->person)->name . ')';
    }

ヘルパー関数optional()は第二因数と共に利用し、第一因数(optionalの中)がNullの場合、第二因数を実行してくれます。

解決策2

連想配列にしても上手く行きました。

Board.php

public function getData()
{
    return $this->id . ': ' . $this->title . ' (' . $this->person['name'] . ')';
}

参考文献

Laravel:Trying to get property of non-object エラー

##会社の紹介
私は現在、株式会社ダイアログという物流×ITの会社に勤務しております。
2020年11月現在、エンジニアの募集はしていませんが、他にも様々な職種を募集しているので、Wantedlyのページをご覧ください。

8
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?