Zend framework2 使用Zend Framework 2和tableGateway进行计数和分组
在Zend Framework 2中,我想使用tableGateway运行以下SQL查询:Zend framework2 使用Zend Framework 2和tableGateway进行计数和分组,zend-framework2,Zend Framework2,在Zend Framework 2中,我想使用tableGateway运行以下SQL查询: SELECT categories.category_name, COUNT(forums.forum_id) FROM categories LEFT JOIN forums ON categories.category_id = forums.category_id GROUP BY categories.category_name; 问题是我根本不知道怎么做。例如,我知道如
SELECT categories.category_name, COUNT(forums.forum_id)
FROM categories LEFT JOIN forums
ON categories.category_id = forums.category_id
GROUP BY categories.category_name;
问题是我根本不知道怎么做。例如,我知道如何使用$select->join()
,但我不知道如何同时进行计数和分组
我想要我的SQL:我有两个表<代码>类别
和论坛
。我想从类别中选择所有类别,并为每个类别选择论坛数量。您的查询看起来不错。当您直接在数据库上运行它时,它是否按预期工作
我认为您可能只需要使用适配器执行原始查询
$sql = "SELECT categories.category_name, COUNT(forums.forum_id) FROM categories LEFT JOIN forums ON categories.category_id = forums.category_id GROUP BY categories.category_name";
$statement = $this->adapter->query($sql);
return $statement->execute();
另一个论坛上有人给了我正确的答案,这对我来说很有用。我想我会分享它,以防其他人有类似的问题。以下是我现在的情况:
使用Zend\Db\Sql\Expression代码>
$resultSet = $this->tableGateway->select(function (Select $select)
{
// Select columns and count the forums.
$select->columns(array(
'category_name',
'forumsCount' => new Expression('COUNT(forums.forum_id)')
));
// Left-join with the forums table.
$select->join('forums', 'categories.category_id = forums.category_id', array(), 'left');
// Group by the category name.
$select->group('categories.category_name');
});
return $resultSet;
检查,应该类似于$select->(新表达式('COUNT(forums.forum\u id)AS ForumCount'))
不幸的是,我无法将其用于tableGateway。我真的希望使用可用的方法,而不是使用实际的SQL。是的,当我在PhpMyAdmin中运行查询时,它工作得很好。请共享该链接,以便我们可以获得其他内容,例如限制、位置和所有…@kumar我的问题不在这里volvelimit
或where
语句,因此它也不在答案中。我们如何在block@khunshan只需添加use($var)
到我答案代码第一行的最后。变量$var
可以在tableGateway
函数之前的方法中定义,也可以来自方法的参数。是的,我知道了。我们必须在闭包中传递作用域。谢谢@Nic