我正在用MySQL和PHP编写MVC CodeIgniter。常见的情况是-我从数据库中获取数据,我想计算它们的数量。我想知道我如何才能以最优化的方式做到这一点。在一个函数中做这件事是否明智?
我将与您分享我的解决方案,请告诉我这是一个好的方法。假设我们有一个模型函数:
public function get_results()
{
$query = $this->db->get('data');
$result = $query->result();
$count = $query->num_rows();
return [$result, $count];
}
问题是这样返回两个值是不是很傻?
我想避免创建新的函数 num_result(),因为我已经运行了一个函数,所以只为count行执行另一个SQL。有没有其他有效的方法来从一个查询执行中获取计数?
4条答案
按热度按时间nkoocmlb1#
您还可以使用以下函数:
则在调用函数时:
qacovj5a2#
从您的模型返回查询对象//Model
//控制器
mi7gmzs63#
你可以通过这些方式做到这一点:-
它可能会帮助你。
tktrz96b4#
因为PHP的
count()
是O(1),所以我看不出存储计数或在MVC设计的层之间传递计数有什么好处。如果您需要结果集数据以及控制器或视图中结果集中的行数,只需在相应的层中调用
count()
。如果您只需要计数,那么您的模型方法(查询)应该使用以
SELECT COUNT(1)
或SELECT COUNT(*)
开头的方法。如果您只需要结果集而不需要计数,那就太好了,因为您的模型方法没有被过度设计以返回未使用的值。
实际上,您的模型可以如此简单:
Codeigniter的
result()
方法将无条件地返回一个数组类型的值。它将是一个空数组或一个对象数组。一致。精简。干净。可重用。