CakePHP 2.1 Avg函数进行查询 [英] CakePHP 2.1 Avg function for query

查看:62
本文介绍了CakePHP 2.1 Avg函数进行查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用cakephp 2.1,我想获得有关普通电影的电影收视率的平均值. 电影"是模型,其中包含语言"和"CriticReview"作为模型. 数组结构如下.

I am using cakephp 2.1 and I wanna get average of movie ratings for perticular movie. Where 'Movie' is a model and it contains 'Language' and 'CriticReview' as models. The array structure is as follows.

    array(
(int) 0 => array(
    'Movie' => array(
        'id' => '4',
        'name' => 'Maattrraan',
        'cover_image' => '/movies/4d0d1c41d956a2cb2ab93603d1fdf70c.jpg',
        'release' => '2012-10-12',
        'runtime' => '',
        'budget' => '65 crore',
        'box_office' => '',
        'language_id' => '2',
        'industry_id' => '3'
    ),
    'Language' => array(
        'id' => '2',
        'name' => 'tamil'
    ),
    'CriticReview' => array(
        (int) 0 => array(
            'rating' => '4',
            'movie_id' => '4'
        ),
                    (int) 1 => array(
                            'rating' => '3',
                            'movie_id' => '4'
                    )
    )
),
(int) 1 => array(
    'Movie' => array(
        'id' => '1',
        'name' => 'Romeo',
        'cover_image' => '/movies/32aa2788fa5e1584d4c627c56214574e.jpg',
        'release' => '2012-07-06',
        'runtime' => '',
        'budget' => '',
        'box_office' => '',
        'language_id' => '1',
        'industry_id' => '1'
    ),
    'Language' => array(
        'id' => '1',
        'name' => 'kannada'
    ),
    'CriticReview' => array(
        (int) 0 => array(
            'rating' => '6',
            'movie_id' => '1'
        ),
                    (int) 1 => array(
                            'rating' => '3',
                            'movie_id' => '1'
                    )
    )
));

因此,我必须对评论家进行平均审查.请帮助我找出解决方案.这项工作将是可观的.

So I have to avg of critic review. Please help me to find out the solution. The work will be appreciable.

推荐答案

我不知道您的查询现在如何,但是您可以尝试添加以下字段:

I don't know how your query looks like now, but you can try to add this field:

$this->Movie->find("all", array(
    "fields"     => array("AVG(CriticReview.rating) AS AverageRating"),
    "conditions" => ...
));

现在返回的数组将在每部电影中包含一个子数组,并带有键0这样的

The array returned will now contain a sub array within each movie with a key 0 like this

[0] => Array
    (
        [AverageRating] => AVG_CALCULATED_BY_MYSQL
    )

我个人更喜欢保存计算的数据,而不是即时计算数据.也许您想阅读以下问题: MySQL-动态计算字段与存储计算的数据

I personally prefer to save calculated data instead of calculate it on fly. Maybe you'd like to read this question: MySQL - Calculating fields on the fly vs storing calculated data

这篇关于CakePHP 2.1 Avg函数进行查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆