我在 Laravel 中遇到了问题。我已经将我的整个表格从我的 Controller 传递到我的 View :
$usersTable = DB::table('users')->get();
return view('users')->with('users', $usersTable);
在 foreach 循环中,我可以在我的 View 中完美地获取像这样的每个值:
@foreach($users as $user => $value)
<div class="projectBox">
<br><span class="projectBoxName">{{ $value->name }}</span>
@php
echo Form::image('/images/edit.png', "",['class' => "editUserBtn", 'userId' => $value->id]);
@endphp
<br><span class="projectBoxSmallText projectBoxEmail">{{ $value->email }}</span>
<br><span class="projectBoxSmallText projectBoxId">ID: {{ $value->id }}</span>
<br><span class="projectBoxSmallText projectBoxProjects">Currently no projects</span>
</div>
@endforeach
但我还需要在我的 foreach 循环之外访问这些值,我该怎么做?
echo Form::text('email', "$users->$value->email", array('placeholder' => "Email"));
不工作...
这以这种形式给出了我的整个对象
[{"id":"1","name":"Administrator","email":"admin@mail.com","password":"$2y$10$Re3Ahf.SwU5vj4UvtU5Dy.jxaZMsUNC2WhuJMwsNy9gu6TST4PuRG","remember_token":null}]
如何只获取邮件?我也尝试过使用索引,但这些都不起作用。 谢谢!
编辑: 完整情况: 我有一个用户列表以及他们的额外信息(邮件、电话……)。在这些用户框中有一个按钮,当我单击该按钮时,它会显示一个模式打开,提供当前的邮件和电话。所以我不能在我的 Controller 中说要返回谁的邮件地址,因为我只知道此时用户单击客户端按钮。 图片: http://imgur.com/a/krDrY (编辑按钮是那个带三个点的小圆圈)。
最佳答案
要在不使用循环的情况下访问集合,您应该使用集合方法:
$users = User::get();
$users->where('name', 'John Smith')->first()->email
这不会创建任何额外的查询,因为您已经预先加载了数据。
如果您只想加载一个用户,请使用 first()
而不是 get()
:
$users = User::first();
如果你像一些人在这里推荐的那样使用 get()
然后 [0]
或 first()
,你会将所有用户数据加载到每个请求的内存中,这会使您的服务器过载。
此外,使用索引访问数据(如 $users[4]['email']
)是一种不好的做法。尽可能避免它。
关于php - View 中表的输出值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42836608/