php - 请教 laravel view 怎么显示 controller 中传递的对象值。
怪我咯
怪我咯 2017-04-10 16:57:54
[PHP讨论组]

Controller 代码:

public function show(Request $request,$id){
$person = DB::table('persons')->where('id',$id)->get();
return view('showuser',compact('person'));
}

我在 view/showuser.blade.php 怎么写才能显示出 person 这个对象的值?

必须这么写才行 {{ $person[0]->id }} ???

感觉这样显示的值是个数组啊。 不是对象啊。

view()->withXXX
view('xxx,compact('xxx'))
这些传递到 view 的数据 都应该怎么显示???
这些数据都是什么形式?
希望熟悉 laravel 的 指点下~

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(4)
天蓬老师
$person = DB::table('persons')->where('id',$id)->get();

这句其实是从 Builder 对象中取回一个 Collection 对象,而该 Collection 对象中包含了 Person 对象。Collection 实现了数组相关的接口,所以也可以使用访问数组的方式获取 Person 对象。

如果想通过 id 直接获取 Person 对象,可以使用 find 方法:

$person = DB::table('person')->find($id);

Blade 中可以使用 @for、@foreach 或 @forelse 等遍历对象集合,再显示对象的属性值:

@forelse($persons as $person)
    <li> {{ $person->name }} </li>
@empty
    <span>Nothing.</span>
@endforelse

对于单个对象自然直接访问即可:

Hello, {{ $person->name }} !
黄舟

楼主既然写了获取某个ID的用户,那根本用不到 foreach 了吧。只获取一个用户的可以直接用 first() 方法:

$person = DB::table('persons')->where('id',$id)->first();
// Or
$person = DB::table('persons')->where('id',$id)->firstOrFail();

这样的话在 view 中可以直接 $person->name 来显示,而不用 $person[0]->name 了。

PHP中文网

你需要@foreach

迷茫

楼上正解

@foreache($person as $temp)
 {$temp->foo}
@endforeach

你查询出来的数据形式可以试着

dd();

laravel中传递的数据一般都为JSON数组形式

同在学习laravel,如有错误的地方欢迎指出

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号