访问 Blade 中的多维数组

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)

我遇到了令人讨厌的错误。

有什么提示吗?

jsz*_*ody 5

您当前没有多维数组。您正在将 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,并帮助您了解如何导航它。