cakephp3 — итерация цикла foreach не удалась

Я получаю список пользователей в виде массива, разбиваю данные на страницы и показываю их в представлении в виде таблицы.

Для перебора массива я использую цикл foreach. Но моя итерация цикла foreach не работает.

Вот пример массива, когда я сделал print_r(). У меня есть поля id, email и full_name, которые я хочу отобразить в поле зрения.

Cake\ORM\ResultSet Object
(
    [items] => Array
        (
            [0] => App\Model\Entity\Role Object
                (
                    [_matchingData] => Array
                        (
                            [Users] => App\Model\Entity\User Object
                                (
                                    [id] => 1
                                    [email] => [email protected]
                                    [full_name] => John Doe
                                    [[new]] => 
                                    [[accessible]] => Array
                                        (   [*] => 1 )
                                    [[dirty]] => Array
                                        ( )
                                    [[original]] => Array
                                        ( )
                                    [[virtual]] => Array
                                        ( )
                                    [[errors]] => Array
                                        ( )
                                    [[invalid]] => Array
                                        (  )
                                    [[repository]] => Users
                                )
                        )

                    [[new]] => 
                    [[accessible]] => Array
                        ( [*] => 1 )
                    [[dirty]] => Array
                        ( )
                    [[original]] => Array
                        (  )
                    [[virtual]] => Array
                        ( )
                    [[errors]] => Array
                        (  )
                    [[invalid]] => Array
                        (  )
                    [[repository]] => Roles
                )
        )
)

Это часть представления, где я перебираю массив. Результат сохраняется в $userList. В этом массиве всегда более одного пользователя, поэтому я использую цикл foreach.

<?php foreach ($userList as $user): ?>
<tr>
    <td><?php echo($user->id); ?></td>
    <td><?php echo($user->email); ?></td>
    <td><?php echo($user->full_name); ?></td>
</tr>
<?php endforeach; ?>

На мой взгляд, строки генерируются, но я не вижу значений массива. Если в массиве пять пользователей, создается 5 строк, но значения не отображаются. Что не так с итерацией, которую я использовал? Кто-нибудь может указать на мою ошибку? Спасибо!

ОБНОВЛЕНИЕ

Функция контроллера

public function view()
{
    $this->loadComponent('Prg');
    $this->Prg->commonProcess();
    $params = $this->Prg->parsedParams();

    //Listing  members
    $this->paginate = [
    'limit'  => 25,
    'finder' => ['UsersList' =>['filter'=> $params]],
    'extraOptions' =>[
                        'params' => $params
                     ]
    ];

    $usersList = $this->paginate($this->CompanyUsers); 
    $this->set('usersList', $usersList);
    $this->set('_serialize', ['usersList');
}

Функция модели

public function findUsersList(Query $query, array $options)
{
    $query
    ->select(['Users.id','Users.email','Users.full_name'])
                ->leftJoinWith('Users');
    return $query; 
}

Примечание. Эта функция поиска находится в CompanyUsersTable. CompanyUsersTable имеет отношения с пользователями. Поэтому я оставил соединение UsersTable с CompanyUsersTable и получил список пользователей этой компании.


person version 2    schedule 13.06.2017    source источник
comment
Проверьте свою функцию h(), пожалуйста.   -  person Praveen Kumar    schedule 13.06.2017
comment
h() — это сокращение от эха в cakephp. @Правин Кумар   -  person version 2    schedule 13.06.2017


Ответы (1)


Попробуй это

<?php foreach ($userList as $user): ?>
<tr>
    <td><?php echo($user->_matchingData['Users']->id); ?></td> 
</tr>
<?php endforeach; ?>

OR

Можете ли вы поделиться кодом, который вы используете для получения записей?

person Vivek D.    schedule 13.06.2017
comment
Я добавил функцию контроллера и поиска. Вы можете взглянуть на них? Ваш ответ работает, но я не знаю, почему _matchingData входит в массив. @Вивек Д. - person version 2; 13.06.2017
comment
Я считаю, что _matchingData должен присутствовать только тогда, когда вы используете функцию ->matching(). Здесь это нигде не показано, что наводит меня на мысль, что вы не включили какой-то ключевой фрагмент кода. - person Greg Schmidt; 14.06.2017