尝试在 null laravel-8 上读取 属性 "match_name"
Attempt to read property "match_name" on null laravel-8
我有
ErrorException
Attempt to read property "match_name" on null (View: C:\xampp\htdocs\Cbangla\resources\views\admin\manage\score\index.blade.php)
Error
我想从我的分数中获取所有数据tables 这是我的分数table 数据库视图
要获取分数中的所有数据 table 这就是我的 ScoreController.php
public function index()
{
$data=Score::all();
$team=Team::all();
$match=Matchh::all();
$player=Player::all();
return view('admin.manage.score.index',compact('data','team','match','player'));
}
这是我的Score.php模型
protected $fillable = ['score_name','score_slug','team_id','match_id','player_id'];
public function team(){
return $this->belongsTo(Team::class);
}
public function matchh(){
return $this->belongsTo(Matchh::class);
}
public function playre(){
return $this->belongsTo(Player::class);
}
这是我的index.blade.php
@foreach ($data as $key => $row)
<tr>
<td>{{ $key + 1 }}</td>
<td>{{ $row->score_name }}</td>
<td>{{ $row->score_slug }}</td>
<td>{{ $row->matchh->match_name }}</td>
<td>{{ $row->team->team_name }}</td>
<td>{{ $row->player->player_name }}</td>
</tr>
@endforeach
请将 match_id
添加到 matchh
关系案例中,您的关系名称与您存储在数据库中的匹配 ID 不同
public function matchh(){
return $this->belongsTo(Matchh::class,'match_id');
}
您必须提供关系中的键,因为您的方法名称是 matchh
,在这种情况下关系除了 matchh_id
但在您的情况下它必须是 match_id
。
所以:
public function matchh(): BelongsTo
{
return $this->belongsTo(Matchh::class, 'match_id');
}
据我所知,当分数不匹配或找不到匹配项时出现问题。
首先,您必须指定关系列,因为您的模型名为 Matchh
并且 laravel 正在寻找 matchh_id
列。
解决方案:
# Score.php model
public function matchh(){
return $this->belongsTo(Matchh::class,'match_id');
}
提示 1:
你可以使用optional
函数,当你不确定模型是否有关系时
@foreach ($data as $key => $row)
<tr>
<td>{{ $key + 1 }}</td>
<td>{{ $row->score_name }}</td>
<td>{{ $row->score_slug }}</td>
<td>{{ optional($row->matchh)->match_name }}</td>
<td>{{ optional($row->team)->team_name }}</td>
<td>{{ optional($row->player)->player_name }}</td>
</tr>
@endforeach
提示 2:
您可以使用 whereHas
函数来确保 Score
具有 Matchh
public function index()
{
$data=Score::query()->whereHas('matchh')->get();
$team=Team::all();
$match=Matchh::all();
$player=Player::all();
return view('admin.manage.score.index',compact('data','team','match','player'));
}
我有
ErrorException Attempt to read property "match_name" on null (View: C:\xampp\htdocs\Cbangla\resources\views\admin\manage\score\index.blade.php) Error
我想从我的分数中获取所有数据tables 这是我的分数table 数据库视图
要获取分数中的所有数据 table 这就是我的 ScoreController.php
public function index()
{
$data=Score::all();
$team=Team::all();
$match=Matchh::all();
$player=Player::all();
return view('admin.manage.score.index',compact('data','team','match','player'));
}
这是我的Score.php模型
protected $fillable = ['score_name','score_slug','team_id','match_id','player_id'];
public function team(){
return $this->belongsTo(Team::class);
}
public function matchh(){
return $this->belongsTo(Matchh::class);
}
public function playre(){
return $this->belongsTo(Player::class);
}
这是我的index.blade.php
@foreach ($data as $key => $row)
<tr>
<td>{{ $key + 1 }}</td>
<td>{{ $row->score_name }}</td>
<td>{{ $row->score_slug }}</td>
<td>{{ $row->matchh->match_name }}</td>
<td>{{ $row->team->team_name }}</td>
<td>{{ $row->player->player_name }}</td>
</tr>
@endforeach
请将 match_id
添加到 matchh
关系案例中,您的关系名称与您存储在数据库中的匹配 ID 不同
public function matchh(){
return $this->belongsTo(Matchh::class,'match_id');
}
您必须提供关系中的键,因为您的方法名称是 matchh
,在这种情况下关系除了 matchh_id
但在您的情况下它必须是 match_id
。
所以:
public function matchh(): BelongsTo
{
return $this->belongsTo(Matchh::class, 'match_id');
}
据我所知,当分数不匹配或找不到匹配项时出现问题。
首先,您必须指定关系列,因为您的模型名为 Matchh
并且 laravel 正在寻找 matchh_id
列。
解决方案:
# Score.php model
public function matchh(){
return $this->belongsTo(Matchh::class,'match_id');
}
提示 1:
你可以使用optional
函数,当你不确定模型是否有关系时
@foreach ($data as $key => $row)
<tr>
<td>{{ $key + 1 }}</td>
<td>{{ $row->score_name }}</td>
<td>{{ $row->score_slug }}</td>
<td>{{ optional($row->matchh)->match_name }}</td>
<td>{{ optional($row->team)->team_name }}</td>
<td>{{ optional($row->player)->player_name }}</td>
</tr>
@endforeach
提示 2:
您可以使用 whereHas
函数来确保 Score
具有 Matchh
public function index()
{
$data=Score::query()->whereHas('matchh')->get();
$team=Team::all();
$match=Matchh::all();
$player=Player::all();
return view('admin.manage.score.index',compact('data','team','match','player'));
}