2017-06-13 141 views
1

我將用戶列表作爲數組提取並對數據進行分頁並將其作爲表格顯示在視圖中。cakephp3- foreach循環迭代失敗

要迭代數組,我使用foreach循環。但我的foreach循環迭代不起作用。

下面是當我做一個樣本陣列print_r() 我有idemailfull_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行,但不會顯示值。 我使用的迭代有什麼問題? 任何人都可以指出我的錯誤嗎? 謝謝!

UPDATE

控制器功能

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

注意:此取景功能是CompanyUsersTableCompanyUsersTable與用戶有關係。所以我離開加入UsersTableCompanyUsersTable並獲取該公司下的用戶列表。

+0

請檢查你的'h()'功能。 –

+0

h()是一個用於echo的cakephp速記。 @Praveen Kumar – Annabelle

回答

2

試試這個

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

OR

你能分享你正在使用以獲得記錄的代碼?

+0

我添加了控制器和查找器功能。你可以看看他們嗎?你的答案有效,但我不知道爲什麼_matchingData進入數組。 @Vivek D. – Annabelle

+0

我相信_matchingData應該只在使用' - > matching()'函數時才存在。這在任何地方都沒有顯示,這導致我認爲你沒有包含一些關鍵代碼。 –