迭代不返回所有值CakePhp
我正在尝试获得一个帐户正在跟踪的用户的所有帖子。我有一个查询,检查当前用户在跟踪谁,该查询工作正常(返回所有值|下面的代码) 问题是当我尝试获取帖子时,我只获得一个用户的帖子。有什么问题的建议吗迭代不返回所有值CakePhp,cakephp,foreach,cakephp-3.0,Cakephp,Foreach,Cakephp 3.0,我正在尝试获得一个帐户正在跟踪的用户的所有帖子。我有一个查询,检查当前用户在跟踪谁,该查询工作正常(返回所有值|下面的代码) 问题是当我尝试获取帖子时,我只获得一个用户的帖子。有什么问题的建议吗 $all_posts_following = NULL; foreach($all_following as $follower) { $postsTable=TableRegistry::get('Posts'); $a
$all_posts_following = NULL;
foreach($all_following as $follower)
{
$postsTable=TableRegistry::get('Posts');
$all_posts_following = $postsTable->find('all')->where(['Posts.user_fk' => $follower[('followed_fk')]])->toArray();
}
$this->set("all_posts_following",$all_posts_following);
您正在覆盖之前分配给
所有帖子的值
如果要附加到数组,请使用array\u merge
$all_posts_following = [];
$postsTable = TableRegistry::get('Posts');
foreach($all_following as $follower)
{
$posts = $postsTable->find('all')->where(['Posts.user_fk' => $follower[('followed_fk')]])->toArray();
$all_posts_following = array_merge($all_posts_following, $posts);
}
$this->set("all_posts_following",$all_posts_following);
或者,您可以使用IN
操作符查询所有匹配项
$postsTable = TableRegistry::get('Posts');
$all_posts_following = $postsTable->find('all')
->where(['
Posts.user_fk IN' => $all_following
])->toArray();
请记住,当您调用toArray()
时,MySQL驱动程序会在将所有记录发送到视图之前将其读取到内存中。如果您知道只需要迭代(循环)记录,那么将查询传递给视图,并在foreach
中使用它
$postsTable = TableRegistry::get('Posts');
$all_posts_following = $postsTable->find('all')
->where(['
Posts.user_fk IN' => $all_following
])->toArray();