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公式ドキュメント

  • この記事を書いた人

コウダイ

都内のWeb系自社開発企業に勤務するエンジニア|33歳1児のパパ|ブログ歴4年→月間6,000PV|新卒で手取り18万のホテルマン6年→プログラミングを900時間勉強→100社以上応募しアラサー未経験から7ヶ月でフルリモートのWEB系自社開発エンジニアに転職し年収100万円UP|【人生を自由に、ノンストレスで生きる】をテーマに、30歳で文系・異業種未経験からITエンジニアに転職したノウハウの他、プログラミングやブログで稼ぐ方法など、「時間や場所に縛られずに稼ぐ」方法を発信しています。

-PHP