mysql - cakephp 3.4 mySQL 到 orm 转换

标签 mysql cakephp orm query-builder cakephp-3.4

我当前的 MYSQL 查询是

SELECT
    cl.user_id,
    COUNT(q.id) as completed_questions,
    (
        SELECT
            SUM(points) 
        FROM
            completed_levels 
        WHERE
            user_id = cl.user_id 
    )
    as level_point 
FROM
    completed_levels cl 
    JOIN
        questions q 
        on q.level_id = cl.level_id 
GROUP BY
    cl.user_id;

我当前的 ORM 正在遵循我只是无法处理

中的选择部分
$completedLevels = TableRegistry::get('CompletedLevels');
$completedLevels = $completedLevels->find('All');
$completedLevels = $completedLevels
    ->contain(['Users', 'Levels'])
    ->select([
        'user_name' => 'Users.name',
        'count_questions' => 'COUNT(Questions.id)',
        'total_pints' => [
            'select'=>'SUM(CompletedLevels.points)'
        ]
    ])
    ->join([
        'table' => 'Questions',
        'conditions' => 'Questions.level_id = CompletedLevels.level_id',
    ])
    ->group(['CompletedLevels.user_id'])
    ->all();

最佳答案

找到答案 它的“子查询”

    $completedLevels = TableRegistry::get('CompletedLevels');
    TableRegistry::config('cl', ['table' => 'completed_levels']);
    $cl = TableRegistry::get('cl');
    $cl = $cl->find('all');
    $cl ->select($cl->func()->sum('points'));

    $completedLevels = $completedLevels->find('All');
    $completedLevels = $completedLevels
        ->contain(['Users', 'Levels'])
        ->select([
            'user_name' => 'Users.name',
            'count_questions' => 'COUNT(Questions.id)',
            'total_pints' => $cl->where('user_id = CompletedLevels.user_id')
        ])->join([
            'table' => 'Questions',
            'conditions' => 'Questions.level_id = CompletedLevels.level_id',
        ])->group(['CompletedLevels.user_id']);

关于mysql - cakephp 3.4 mySQL 到 orm 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45172858/

相关文章:

mysql - 是否可以移动 MySQL 表中的行数据?

entity-framework - Entity Framework - 连接新添加的 Poco 实体并加载子对象(插入/添加)

java - Hibernate子类id在每个子类的表中生成

java - 如何将MySQL数据库中已存储的图像转换为本地存储的图像

mysql - 使用 NULL 值对字符串进行分组

php - 根据里面的菜单数量调整导航栏

mysql - 如何在mysql中存储元数据

java - "orphanRemoval = true"删除操作时未删除子对象

php - 在 PHP/MYSQL 中使用的最佳哈希算法

mysql - CakePHP模型和查询问题