2017-06-13 8 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人いる場合、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; 
} 

注:このファインダー機能CompanyUsersTableです。 CompanyUsersTableはユーザーと関連性があります。だから私はUsersTableCompanyUsersTableと参加し、その会社の下のユーザーのリストを取得しました。

+0

'h()'機能を確認してください。 –

+0

h()はechoの略語です。 @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

' - > matching()'関数を使うとき、_matchingDataは存在するべきだと思います。ここにはどこにも表示されていないので、コードの重要な部分が含まれていないと思うようになります。 –

関連する問題