【问题标题】:cakephp3- foreach loop iteration failedcakephp3-foreach 循环迭代失败
【发布时间】:2017-06-13 06:42:18
【问题描述】:

我正在以数组的形式获取用户列表,并对数据进行分页并将其作为表格显示在视图中。

为了迭代数组,我使用了 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] => johndoe@doe.com
                                    [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 行但不显示值。 我使用的迭代有什么问题? 谁能指出我的错误? 谢谢!

更新

控制器功能

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 与用户有关系。所以我离开了 join UsersTableCompanyUsersTable 并获取该公司下的用户列表。

【问题讨论】:

  • 请查看您的h() 功能。
  • h() 是 echo 的 cakephp 简写。 @Praveen Kumar

标签: php arrays foreach cakephp-3.0 cakephp-3.x


【解决方案1】:

试试这个

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

你能分享你用来获取记录的代码吗?

【讨论】:

  • 我已经添加了控制器和查找器功能。你能看看他们吗?您的答案有效,但我不知道为什么 _matchingData 出现在数组中。 @Vivek D.
  • 我相信 _matchingData 只有在您使用 -&gt;matching() 函数时才会出现。这里没有显示,这让我认为你没有包含一些关键代码。
猜你喜欢
  • 2016-08-11
  • 1970-01-01
  • 2018-03-13
  • 1970-01-01
  • 2013-11-19
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
相关资源
最近更新 更多