<?php QApplication::$Database[1]->EnableProfiling(); $objPersonArray = Person::QueryArray(QQ::GreaterThan(QQ::Virtual('diff', QQ::MathOp('+', QQN::Person()->ProjectAsManager->Spent, QQ::Neg(QQN::Person()->ProjectAsManager->Budget))), 20), QQ::Clause(QQ::OrderBy(QQ::Virtual('diff'), 'DESC'), QQ::Expand(QQ::Virtual('diff')), QQ::Select(array(QQ::Virtual('diff'), QQN::Person()->FirstName, QQN::Person()->LastName)))); foreach ($objPersonArray as $objPerson) { _p($objPerson->FirstName . ' ' . $objPerson->LastName) . ' : ' . $objPerson->GetVirtualAttribute('diff'); _p('<br/>', false); } ?> <p><?php QApplication::$Database[1]->OutputProfiling(); ?> </p> <h2>SQL Function Example</h2> <p>Use the QQ::Abs and QQ::Sub functions to retrieve projects both over-budget and under-budget by $20.</p> <?php QApplication::$Database[1]->EnableProfiling(); $objPersonArray = Person::QueryArray(QQ::GreaterThan(QQ::Virtual('absdiff', QQ::Abs(QQ::Sub(QQN::Person()->ProjectAsManager->Spent, QQN::Person()->ProjectAsManager->Budget))), 20), QQ::Clause(QQ::OrderBy(QQ::Virtual('absdiff'), 'DESC'), QQ::Expand(QQ::Virtual('absdiff')), QQ::Select(array(QQ::Virtual('absdiff'), QQN::Person()->FirstName, QQN::Person()->LastName)))); foreach ($objPersonArray as $objPerson) { _p($objPerson->FirstName . ' ' . $objPerson->LastName) . ' : ' . $objPerson->GetVirtualAttribute('diff'); _p('<br/>', false); } ?> <p><?php QApplication::$Database[1]->OutputProfiling(); ?> </p> </div> <?php require '../includes/footer.inc.php';
public function testVirtualAttributeAliases() { $clauses = [QQ::GroupBy(QQN::Project()->ProjectStatusTypeId), QQ::Sum(QQN::Project()->Budget, 'Budget Amount'), QQ::Expand(QQ::Virtual('Balance', QQ::Func('SUM', QQ::Sub(QQN::Project()->Budget, QQN::Project()->Spent))))]; $cond = QQ::Equal(QQN::Project()->ProjectStatusTypeId, ProjectStatusType::Open); $objProject = Project::QuerySingle($cond, $clauses); $amount1 = $objProject->GetVirtualAttribute('Budget Amount'); $this->assertEquals(83000, $amount1); $amount2 = $objProject->GetVirtualAttribute('Balance'); $this->assertEquals(5599.5, $amount2); }
/** * Tests to ensure the example to work */ public function testExample() { $objPersonArray = Person::QueryArray(QQ::GreaterThan(QQ::Sub(QQN::Person()->ProjectAsManager->Spent, QQN::Person()->ProjectAsManager->Budget), 20)); $this->assertGreaterThan(0, count($objPersonArray)); foreach ($objPersonArray as $objPerson) { $this->assertNotNull($objPerson->FirstName); $this->assertNotNull($objPerson->LastName); } $objPersonArray = Person::QueryArray(QQ::GreaterThan(QQ::Virtual('diff', QQ::Sub(QQN::Person()->ProjectAsManager->Spent, QQN::Person()->ProjectAsManager->Budget)), 20), QQ::Clause(QQ::OrderBy(QQ::Virtual('diff'), 'DESC'), QQ::Expand(QQ::Virtual('diff')))); $this->assertGreaterThan(0, count($objPersonArray)); foreach ($objPersonArray as $objPerson) { $this->assertNotNull($objPerson->FirstName); $this->assertNotNull($objPerson->LastName); $this->assertNotNull($objPerson->GetVirtualAttribute('diff')); } $objPersonArray = Person::QueryArray(QQ::GreaterThan(QQ::Virtual('diff', QQ::MathOp('-', QQN::Person()->ProjectAsManager->Spent, QQN::Person()->ProjectAsManager->Budget)), 20), QQ::Clause(QQ::OrderBy(QQ::Virtual('diff'), 'DESC'), QQ::Expand(QQ::Virtual('diff')), QQ::Select(array(QQ::Virtual('diff'), QQN::Person()->FirstName, QQN::Person()->LastName)))); $this->assertGreaterThan(0, count($objPersonArray)); foreach ($objPersonArray as $objPerson) { $this->assertNotNull($objPerson->FirstName); $this->assertNotNull($objPerson->LastName); $this->assertNotNull($objPerson->GetVirtualAttribute('diff')); } $objPersonArray = Person::QueryArray(QQ::GreaterThan(QQ::Virtual('absdiff', QQ::Abs(QQ::Sub(QQN::Person()->ProjectAsManager->Spent, QQN::Person()->ProjectAsManager->Budget))), 20), QQ::Clause(QQ::OrderBy(QQ::Virtual('absdiff'), 'DESC'), QQ::Expand(QQ::Virtual('absdiff')), QQ::Select(array(QQ::Virtual('absdiff'), QQN::Person()->FirstName, QQN::Person()->LastName)))); $this->assertGreaterThan(0, count($objPersonArray)); foreach ($objPersonArray as $objPerson) { $this->assertNotNull($objPerson->FirstName); $this->assertNotNull($objPerson->LastName); $this->assertNotNull($objPerson->GetVirtualAttribute('absdiff')); } }