Я получаю результаты из базы данных в контроллере и сохраняю их как объекты в массиве
$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
Каждая переменная в массиве является массивом объектов. Есть два способа сделать это.
Добавьте еще один 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();
Других решений пока нет …