设置全局变量在Symfony中不起作用

时间:2017-12-06 22:44:11

标签: php symfony

我无法在$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)

1 个答案:

答案 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();