PHP

【Laravel】外部キーの呼び出しで「Attempt to read property "name" on null」のエラー

動作環境

  • Laravel 8.40.0
  • PHP 8.0.3

リレーションの設定漏れにより表題のエラーが発生することがあるため備忘録としてまとめます。

例えば、通常usersテーブルがあった場合の外部キーとしてはuser_id( {テーブル名の単数形}_id )となるが、このルールに当てはまらない外部キーの名称を設定したとき(例えばclient_idなど)、通常のようにビューからリレーションを張った側から呼び出すと下記のようにエラーが発生する。

ErrorException
Attempt to read property "name" on null

この場合の対応として、モデルにリレーションを設定する際に、外部キーの名称を引数として指定する必要がある。

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Kuchikomi extends Model
{

    public function User()
    {
        return $this->belongsTo(User::class,'client_id');
    }
}

参考 : Laravel8公式ドキュメント

  • この記事を書いた人

コウダイ

文系・ノースキル・未経験・アラサー・地方住み・残業100時間超えの社畜ホテルマンから都内IT系上場企業のフルリモートWebエンジニアに転職した人。

都内IT系上場企業に勤務するWebエンジニア5年目|プログラミングスクールのテックキャンプ公式アンバサダー|新卒で手取り18万の地方ホテルマン6年→挫折→プログラミングを900時間勉強→転職活動100社以上応募→アラサー未経験から7ヶ月でフルリモートのWebエンジニアに転職し年収150万円UP|34歳2児のパパ|ブログ歴4年→月間6,000PV|エンジニア転職ノウハウ、プログラミング、Web制作、副業での稼ぎ方など、「時間や場所に縛られずに稼ぐ」方法を発信しています。

-PHP