我在Laravel遇到了问题。我把整张桌子从我的控制器那里传到了我的视线中:
$usersTable = DB::table('users')->get();
return view('users')->with('users', $usersTable);
在foreach循环中,我可以在我看来完美地得到这样的每个值:
@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}]
如何只收到电子邮件?我也试过使用索引,但那些都没有用。 谢谢!
修改 完整情况: 我有一个用户列表及其额外信息(邮件,电话,...)。在那些用户框中有一个按钮,当我点击一个模态打开给出当前邮件和电话时,它会显示“编辑用户”。所以我不能在我的控制器中说WHO的mailaddress返回,因为我只知道用户点击客户端按钮的那一刻。 图片: http://imgur.com/a/krDrY (编辑按钮是带有三个点的小圆圈。)
答案 0 :(得分:1)
要在不使用循环的情况下访问集合,您应该使用集合方法:
$users = User::get();
$users->where('name', 'John Smith')->first()->email
由于您已经预先加载了数据,因此不会创建任何其他查询。
如果您只想加载一个用户,请使用first()
代替get()
:
$users = User::first();
如果您使用get()
,然后[0]
或first()
,就像有些人推荐的那样,您会将所有用户数据加载到内存中,因为每个请求都会使服务器超载
此外,使用索引访问数据(如$users[4]['email']
)是一种不好的做法。如果可能,请避免使用它。
答案 1 :(得分:0)
您需要添加[0]
echo Form::text('email', $users[0]->email, array('placeholder' => "Email"));
我建议使用->first()
代替->get()
来获取单个对象。并删除循环并在任何地方使用。
答案 2 :(得分:0)
您正在使用users
的集合来获取第一位用户的电子邮件
$users->first()->email;
答案 3 :(得分:-2)
看起来它是以JSON身份进入的。尝试使用json_decode($data)
和$data->email
来获取该属性。