cakephp3-foreach 循环迭代失败
cakephp3- foreach loop iteration failed
我正在获取用户列表作为数组并对数据进行分页并将其显示在视图中作为 table。
为了迭代数组,我使用了 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] => 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 行但不显示值。
我使用的迭代有什么问题?
谁能指出我的错误?
谢谢!
更新
控制器功能
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
并获取该公司下的用户列表。
试试这个
<?php foreach ($userList as $user): ?>
<tr>
<td><?php echo($user->_matchingData['Users']->id); ?></td>
</tr>
<?php endforeach; ?>
或
你能分享一下你用来获取记录的代码吗?
我正在获取用户列表作为数组并对数据进行分页并将其显示在视图中作为 table。
为了迭代数组,我使用了 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] => 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 行但不显示值。 我使用的迭代有什么问题? 谁能指出我的错误? 谢谢!
更新
控制器功能
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
并获取该公司下的用户列表。
试试这个
<?php foreach ($userList as $user): ?>
<tr>
<td><?php echo($user->_matchingData['Users']->id); ?></td>
</tr>
<?php endforeach; ?>
或
你能分享一下你用来获取记录的代码吗?