Laravel初心者の初心者です。
Laravel入門(第2版)という有名な本で勉強しているのですが、
belong To結合がうまくいきません。
http://localhost/laravel_app/public/boardにアクセスすると以下のエラーがでます。
ErrorException Trying to get property 'name' of non-object (View: /opt/lampp/htdocs/laravel_app/resources/views/board/index.blade.php) Illuminate\Foundation\Bootstrap\HandleExceptions::handleError app/Models/Board.php:21
主なソースコードは以下です。
Board.php
board.php
1<?php 2 3namespace App\Models; 4 5use Illuminate\Database\Eloquent\Factories\HasFactory; 6use Illuminate\Database\Eloquent\Model; 7 8class Board extends Model 9{ 10 protected $guarded = array('id'); 11 12 public static $rules = array( 13 'person_id' => 'required', 14 'title' => 'required', 15 'message' => 'required' 16 ); 17 18 public function getData() 19 { 20 // ★★★★★ここでnameが参照できないといっている? 21 return $this->id . ': ' . $this->title . '(' 22 . $this->person->name . ')'; 23 } 24 25 public function person() 26 { 27 return $this->belongsTo('App\Models\Person'); 28 } 29}
Person.php
person.php
1<?php 2 3namespace App\Models; 4 5use Illuminate\Database\Eloquent\Factories\HasFactory; 6use Illuminate\Database\Eloquent\Model; 7use Illuminate\Database\Eloquent\Builder; 8use App\Scopes\ScopePerson; 9 10class Person extends Model 11{ 12 protected $guarded = array('id'); 13 14 public static $rules = array( 15 'name' => 'required', 16 'mail' => 'email', 17 'age' => 'integer|min:0|max:150' 18 ); 19 20 public function getData() 21 { 22 return $this->id . ': ' . $this->name . ' (' . $this->age . ')'; 23 } 24 25 public function boards() 26 { 27 return $this->hasMany('App\Models\Board'); 28 } 29}
どこがおかしいのかわかる方いらっしゃいませんでしょうか?
回答1件
あなたの回答
tips
プレビュー