Hello I am trying to make a company sales report generator but I am stuck. I tried to write the code as below but SQL functions are not working:
public function getMonthlyReport($company, $year)
{
$searchYear = New \DateTimeImmutable("$year-01T-01T00:00:00");
$searchYearEnd = New \DateTimeImmutable("$year-12-31T23:59:59");
$query = $this->createQueryBuilder('s')
->select('SUM(expenses.price)')
->select('SUM(s.price)')
->select('MONTHNAME(s.created_at)')
->leftJoin('s.Expenses', 'expenses')
->andWhere('s.Company = :company')
->setParameter('company', $company)
->andWhere('s.created_at BETWEEN :startDate AND :endDate')
->setParameter('startDate ', $searchYear)
->setParameter('endDate', $searchYearEnd);
return $query
->getQuery()
->getResult();
}
I want a result as below:
Month Sales Expenses
January 1250 0
February 10000 54879
March 0 4578
April 54000 44567
May 7854 2135
June 6399 8000
July 0 0
August 128000 1200
September 128000 1200
October 128000 1200
November 128000 1200
December 128000 1200
Appreciate your helps, Regards
EDIT 1: I have written a SQL query as below but it's only fetching if there is a record on that month(0 if no record presents in that month) and I couldn't execute it in Symfony due to SUM and MONTHNAME functions
SELECT SUM(expenses.price), SUM(sales.price), MONTHNAME(sales.created_at) FROM sales left join expenses On expenses.sales_id = sales.sales_id WHERE 1 GROUP BY MONTHNAME(sales.created_at) ORDER BY sales.created_at ASC;
Result:
Month Sales Expenses
November 1650000 5275000
February 2750000 10550000
April 21450000 79125000
March 4950000 15825000