public function testMySqlAggregateSupport() { MySql::executeStatement("TRUNCATE TABLE tblCompany"); MySql::executeStatement("TRUNCATE TABLE tblUser"); $company1 = new Company(); $company1->getRepository()->clearObjectCache(); $company1->CompanyName = "1"; $company1->save(); $company2 = new Company(); $company2->CompanyName = "2"; $company2->save(); $user1 = new User(); $user1->Wage = 100; $company1->Users->Append($user1); $user2 = new User(); $user2->Wage = 200; $company1->Users->Append($user2); $user3 = new User(); $user3->Wage = 300; $company2->Users->Append($user3); $user4 = new User(); $user4->Wage = 400; $company2->Users->Append($user4); $companies = new Collection("Company"); $companies->addAggregateColumn(new Sum("Users.Wage")); $results = []; foreach ($companies as $company) { $results[] = $company->SumOfUsersWage; } $this->assertEquals([300, 700], $results); $sql = MySql::getPreviousStatement(); $this->assertEquals("SELECT `tblCompany`.*, SUM( `Users`.`Wage` ) AS `SumOfUsersWage` FROM `tblCompany` LEFT JOIN `tblUser` AS `Users` ON `tblCompany`.`CompanyID` = `Users`.`CompanyID` GROUP BY `tblCompany`.`CompanyID`", $sql); $companies = new Collection("Company"); $companies->addAggregateColumn(new Sum("Users.BigWage")); $results = []; foreach ($companies as $company) { $results[] = $company->SumOfUsersBigWage; } $this->assertEquals([3000, 7000], $results); }