Seb*_*n M 2 php arrays multidimensional-array laravel eloquent
每个学生都有一个用户(一对一)、语言和爱好(多对多)。
一场比赛由两名学生组成(自我关系)
我想用 matchId 填充一个多维数组,其中包含有关第一个学生和第二个学生的所有信息。我这样填充它的数组:
$matches = Match::getMatches($semester->id);
foreach ($matches as $m)
{
$profiles[] = array(
'matchId' => $m->matchId,
'local' => Student::with('user', 'language', 'hobby')->where('user_id', $m->localUserId)->first(),
'incoming'=> Student::with('user', 'language', 'hobby')->where('user_id', $m->incomingUserId)->first());
}
Run Code Online (Sandbox Code Playgroud)
现在我想访问刀片模板中的数据但无法成功。
{{ $profiles['local'] }}
Run Code Online (Sandbox Code Playgroud)
有效,但是当添加类似的东西时
{{ $profiles['local']['email'] }}
Run Code Online (Sandbox Code Playgroud)
我遇到了令人讨厌的错误。
有什么提示吗?
您当前没有多维数组。您正在将 Eloquent 数据库结果对象存储在$profiles['local']该类的实例中Student。
所以你需要像这样访问它:
{{ $profiles['local']->email }}
Run Code Online (Sandbox Code Playgroud)
toArray()或者,您可以在获取学生时在末尾添加一个:
Student::with(...)->where(...)->first()->toArray(),
Run Code Online (Sandbox Code Playgroud)
现在您将拥有一个原始 PHP 数组,并且可以像您最初尝试的那样访问它:
{{ $profiles['local']['email'] }}
Run Code Online (Sandbox Code Playgroud)
旁注:当您不明白如何导航某些内容时,请尝试使用dd来检查它。
<?php dd($profiles['local']); ?>
Run Code Online (Sandbox Code Playgroud)
这将向您表明您有一个 的实例Student,并帮助您了解如何导航它。