从cakephp2.9中匹配的记录中获取数据库列的平均值

7cwmlq89  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(238)

在cakephp2.9中,有没有一种方法(除了完全定制的sql之外)可以从符合特定条件的记录中找到表列的平均值?
例如,我可以通过调用字段模型轻松找到字段列表:

$fields = $this->Field->find('all', array(
    'conditions' => array(
        'User.username' => 'John Doe',
        'Report.created' => '2018-01-01'
    )
);

然而,我真正想得到的是 Field.value ,对于所有匹配的记录。
我通常会做的是执行原始sql查询;

$average = $this->Field->query('
    select avg(f.value) as average from fields f 
      left join users u on (f.user_id = u.id) 
      left join reports r on (f.report_id = r.id) 
      where u.username = "John Doe" and r.created = "2018-01-01"
');

但是,我不一定知道条件字段是什么,我想使用cakephp orm的强大功能来构建查询。
有没有一种方法可以从 Model::find ?

cedebl8k

cedebl8k1#

假设您遵循了cakephp约定。你可以做一个领域的平均如下。

$average = $this->Field->find('all', array(
'fields' => array('AVG(Field.value) as average'),
'conditions' => array('User.username' => 'John Doe', 'Report.created' => '2018-01-01'),
'contain' => array('User', 'Report')
));

希望你能理解。

相关问题