我无法在$result
循环之外访问foreach
。当我在循环中使用dump($results);
时,我得到了结果,但是当我在循环外使用dump($results);
时,结果为空。
$results = array();
foreach ($menu as $menus) {
$mid = $menus->getId();
$em = $this->getDoctrine()->getManager();
$connection = $em->getConnection();
$statement = $connection->prepare("SELECT s.subtitle,m.* FROM submenu as s,menu as m where s.menu_id=m.id and m.id=:data");
$statement->bindValue('data', $mid);
$statement->execute();
$results = $statement->fetchAll();
}
dump($results)
答案 0 :(得分:0)
每次循环都会覆盖$results
变量。所以最终的值只是最后一个查询的结果。我怀疑你想要结合所有查询的结果,所以你需要合并数组。
更改
$result = $statement->fetchAll();
为:
$result += $statement->fetchAll();
或者,您可以将所有查询合并到一个查询中。将所有菜单ID放入数组$menuIDs
,然后执行:
$sql = "SELECT s.subtitle,m.* FROM submenu as s,menu as m where s.menu_id=m.id and m.id IN (" . implode(',', array_fill(0, count($menuIDs), '?')) . ")";
$statement = $connection->prepare($sql);
$statement->execute($menuIDs);
$results = $statement->fetchAll();