我还没有看到任何将计数值作为查询结果中的字段获取的cakephp示例。 这就是我做的事情
$searchfilter = array(
'Booking.bookingdate >=' => $date_period_current_start,
'Booking.bookingdate <=' => $date_period_current_end,
'Booking.merchant_id =' => $this->Session->read('Auth.ActiveMerchant')
);
$fields = array(
'COUNT(*) as reccount',
'SUM(Booking.pax) as totalpax',
);
$bookings_period_current = $this->Booking->find('all', array('conditions' => $searchfilter, 'fields' => $fields)
var_dump($bookings_period_current);
现在这似乎工作正常,我的var_dump会产生:
array (size=1)
0 =>
array (size=1)
0 =>
array (size=2)
'reccount' => string '7' (length=1)
'totalpax' => string '28' (length=2)
我想我的问题是:
1)这是使用cakephp进行计数的正确方法吗?注意我没有使用普通的find('Count',...)方法
2)在我的$ fields变量中,我将COUNT(*)指定为reccount ...这效率非常低吗?预订表有几个其他字段,但我真正想要的是记录的总数,以及Booking.pax的总和。
干杯 凯文
答案 0 :(得分:2)
COUNT(*)
的正确方法是find('count')
,但是如果您想在同一个查询中获取更多字段,那么您的解决方案就可以了。
您也可以使用:
$this->Booking->virtualFields = array(
'reccount' => 'COUNT(*)',
'totalpax' => 'SUM(Booking.pax)'
); // or put it in Booking model
$this->Booking->find('all', array('fields' => array('reccount', 'totalpax')));
b)$this->Booking->query();