代码之家  ›  专栏  ›  技术社区  ›  Mntfr

无法访问laravel中的对象属性

  •  1
  • Mntfr  · 技术社区  · 8 年前

    我从控制器中的数据库中获取结果,并将它们存储为数组中的对象

        $roleSentinel = Sentinel::findRoleByName($role);
        $permisssionsName = array_keys($roleSentinel['permissions']);
        $permissions = array();
    
        foreach ($permisssionsName as $permiso) {
            $permissions[] = DB::table('sec_permission')->where('name', '=',$permiso)->get();
        }
    
        return view('menu', ['role' => $role,'permisos' => $permisos]);
    

    一个物体会是这样的

    [{"permission_id":1,"name":"foo","object_id":1,"operation_id":1}]   
    

    因此,在视图中,我试图获取值并打印它们

    <b>{{$role}}</b><br>
        @foreach ($permisos as $permiso)
             @foreach ($permiso->name as $name)
                {{$name}}
            @endforeach
        @endforeach
    

    Undefined property: Illuminate\Support\Collection::$name

    1 回复  |  直到 8 年前
        1
  •  1
  •   aynber    8 年前

    数组中的每个变量都是一个对象数组。你可以有两种方法。

    添加另一个foreach:

    @foreach ($permisos as $permiso)
    
        @foreach ($permiso as $perm)
            @foreach ($perm->name as $name)
               {{$name}}
            @endforeach
        @endforeach
    @endforeach
    

    或者获取一个包含所有名称的完整集合:

    $permissionsName = array_keys($roleSentinel['permissions']);
    
    $permissions = DB::table('sec_permission')->whereIn('name',$permissionsName)->get();