0
0

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 1 year has passed since last update.

LaravelでTrying to get property 'name' of non-object (View: /var/www/html/laravelapp/resources/views/post/post.blade.php)のエラーが出た時の対処法

Last updated at Posted at 2023-04-25

エラーの背景

共同開発をしている時に以下のようなエラーが出ました。

スクリーンショット 2023-04-25 11.04.39.png

自分の環境だけこのエラーが発生して他のメンバーはエラーが出ていませんでした。
原因がわからなすぎて2,3日詰まってしまいました。その間に他のタスクを進めることができましたが、
かなり苦戦しました。

原因と解決方法

原因は自分がユーザー退会機能を作っていた時、ユーザーが投稿したものを退会と同時に削除する機能がなかったことが原因だったみたいです。

まず解決した方法は以下のコマンドです。一旦エラーは治りました。

php artisan migrate:fresh --seed

DB内のすべてのテーブルを削除し、新しいテーブルを作成して、マイグレーションファイルで定義された
すべてのテーブルとカラムを作成し、データベースにテストデータを挿入するためのSeederファイルを実行するコマンドです。つまり、データベースの完全な再構築と初期化を行うためのコマンドです。
より不整合を減らしながらデータ投入をできますが、全テーブルdropするので、気をつけてください

そしてユーザー退会機能のユーザーが退会と同時に投稿も削除する機能を実装したら解決しました。

User.php
protected $dates = [
        'deleted_at'
    ];

    public function posts()
    {
        return $this->hasMany(Posts::class);
    }

    public static function boot()
    {
        parent::boot();

        static::deleting(function ($user) {
            $user->posts()->delete();
        });
    }

根本的な解決

このエラーが出た時はユーザーの退会機能を実装していた時でした。
ユーザーが何か投稿した時に同時に投稿した内容も削除される機能でしたが、
投稿したものも削除されていなかったのが原因みたいでした。

app/User.php
    protected $dates = [
        'deleted_at'
    ];

#省略

    public static function boot()
    {
        parent::boot();

        static::deleting(function ($user) {
            $user->posts()->delete();
        });
    }

これを実装したら解決しました。
個人によって環境は違うので参考までに!

資料

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?