V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ren2881971
V2EX  ›  PHP

请教 laravel view 怎么显示 controller 中传递的对象值。

  •  
  •   ren2881971 · 2016-03-09 00:01:53 +08:00 · 3635 次点击
    这是一个创建于 3184 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 }} ???

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

    第 1 条附言  ·  2016-03-09 11:14:44 +08:00

    解决了 通过用 Eloquent ORM 达到我想要的方式了。

    同样是从数据库中取值 三种方式:
    1.直接利用 DB 查询 fisrt()
    $person = DB::table('person')->where('id,$id)->first()
    2.直接利用 DB 查询 get()
    $person = DB::table('person')->where('id,$id)->get()
    3.通过 orm 方式
    先创建 Person model 然后
    $person = Person::findOrFail($id);

    view('showuser',compact('person'));

    那么在 showuser.blade.php 中
    1 和 3 是直接用 {{ $person->FirstName }}
    2 的话 需要循环数组或者直接取数组第一个值 {{ $person[0]->FirstName }}

    我可以理解为 first() 和 orm 得到的都是对象可以直接通过调用对象中属性的方式 来获取数据。
    而 get()得到的是数组。 所以得先取数组的值 然后在通过调用属性获取数据是么。。。

    刚开始玩 php 6 不起来啊

    9 条回复    2016-03-09 13:20:24 +08:00
    ren2881971
        1
    ren2881971  
    OP
       2016-03-09 08:43:07 +08:00
    where()->get()
    where()->first()
    view()->withXXX
    view('xxx,compact('xxx'))
    这些传递到 view 的数据 都应该怎么显示???
    这些数据都是什么形式?
    希望熟悉 laravel 的 指点下~
    sunjourney
        2
    sunjourney  
       2016-03-09 09:23:20 +08:00
    blade:

    @foreach($person as $p)
    {{ $p["id"] }}
    @endforeach

    各种值你可以用调度工具、 dd 或者 var_dump 一下看看。
    ren2881971
        3
    ren2881971  
    OP
       2016-03-09 09:28:36 +08:00
    @sunjourney 感谢回复~ 我用 var_dump 看了。
    感觉就是个数组~
    那我可以理解为 通过 view 函数传递到 前台的变量都是数组么???
    vidon
        4
    vidon  
       2016-03-09 10:13:56 +08:00
    @ren2881971 用 get()方法返回的是数组, first()方法是获取数组的第一个值
    ren2881971
        5
    ren2881971  
    OP
       2016-03-09 10:19:11 +08:00
    @vidon 通过 blade 显示在 view 的话 是不是只能用 2L 的写法?
    我的意思是 非得循环个数组? 我传递到前台的数据如果不是数组 是个对象。
    那还循环 有点麻烦啊。
    dawniii
        6
    dawniii  
       2016-03-09 10:45:47 +08:00
    @ren2881971 你前台要什么取决于你用 get 和 first
    ren2881971
        7
    ren2881971  
    OP
       2016-03-09 10:57:08 +08:00
    @dawniii 额。。 比如我用 first 呢?
    dawniii
        8
    dawniii  
       2016-03-09 11:49:38 +08:00
    @ren2881971 get 取出来就是多维的(需要循环) first 取出来就是一维的。

    难道你不知道你自己需要的数据是 list 还是单条的?
    ren2881971
        9
    ren2881971  
    OP
       2016-03-09 13:20:24 +08:00
    @dawniii 懂了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1109 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:06 · PVG 03:06 · LAX 11:06 · JFK 14:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.