查询语言.aggregate

    引入相关类

    • use Tests\Database\DatabaseTestCase as TestCase;

    计算记录数量。

    ::: tip
    可使用 findCount() 或者 count()->find() 来统计记录行。
    :::

    1. public function testBaseUse()
    2. {
    3. $connect = $this->createDatabaseConnectMock();
    4. $sql = <<<'eot'
    5. [
    6. "SELECT COUNT(*) AS row_count FROM `test` LIMIT 1",
    7. [],
    8. false,
    9. null,
    10. null,
    11. []
    12. ]
    13. eot;
    14. $this->assertSame(
    15. $sql,
    16. $this->varJson(
    17. $connect->table('test')->
    18. count()->
    19. findOne(true)
    20. )
    21. );
    22. $sql = <<<'eot'
    23. [
    24. "SELECT COUNT(`test`.`id`) AS row_count FROM `test` LIMIT 1",
    25. [],
    26. false,
    27. null,
    28. null,
    29. []
    30. ]
    31. eot;
    32. $this->assertSame(
    33. $sql,
    34. $this->varJson(
    35. $connect->table('test')->
    36. count('id')->
    37. 1
    38. )
    39. $sql = <<<'eot'
    40. [
    41. "SELECT COUNT(`test`.`id`) AS count1 FROM `test` LIMIT 1",
    42. [],
    43. false,
    44. null,
    45. null,
    46. []
    47. ]
    48. eot;
    49. $this->assertSame(
    50. $sql,
    51. $this->varJson(
    52. $connect->table('test')->
    53. count('id', 'count1')->
    54. findOne(true),
    55. 2
    56. )
    57. );
    58. $sql = <<<'eot'
    59. [
    60. "SELECT COUNT(`test`.`id`*50) AS count1 FROM `test` LIMIT 1",
    61. [],
    62. false,
    63. null,
    64. null,
    65. []
    66. ]
    67. eot;
    68. $this->assertSame(
    69. $sql,
    70. $this->varJson(
    71. $connect->table('test')->
    72. count('{[id]*50}', 'count1')->
    73. findOne(true),
    74. 3
    75. )
    76. );
    77. }

    计算平均值。

    1. {
    2. $sql = <<<'eot'
    3. [
    4. "SELECT MAX(`test`.`num`) AS max_value FROM `test` LIMIT 1",
    5. [],
    6. false,
    7. null,
    8. null,
    9. []
    10. ]
    11. eot;
    12. $this->assertSame(
    13. $sql,
    14. $this->varJson(
    15. $connect->table('test')->
    16. max('num')->
    17. findOne(true)
    18. )
    19. );
    20. }

    计算最小值。

    计算合计。

    1. public function testSum()
    2. {
    3. $connect = $this->createDatabaseConnectMock();
    4. $sql = <<<'eot'
    5. [
    6. "SELECT SUM(`test`.`num`) AS sum_value FROM `test` LIMIT 1",
    7. [],
    8. false,
    9. null,
    10. null,
    11. []
    12. ]
    13. eot;
    14. $this->assertSame(
    15. $sql,
    16. $this->varJson(
    17. $connect->table('test')->
    18. sum('num')->
    19. findOne(true)
    20. )
    21. );