Optimized queries.

This commit is contained in:
Sander Dorigo 2014-11-08 10:16:12 +01:00
parent 6d8f84654f
commit 8196313ac0
2 changed files with 22 additions and 13 deletions

View File

@ -40,12 +40,15 @@ class TransactionJournal implements TransactionJournalInterface, CUD, CommonData
$end = clone $date; $end = clone $date;
$date->startOfMonth(); $date->startOfMonth();
$end->endOfMonth(); $end->endOfMonth();
$list = $this->getUser()->transactionjournals()->transactionTypes(['Deposit'])->before($end)->after($date)->get(['transaction_journals.*']);
$sum = 0; $sum = \DB::table('transactions')
/** @var \TransactionJournal $entry */ ->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
foreach ($list as $entry) { ->leftJoin('transaction_types', 'transaction_journals.transaction_type_id', '=', 'transaction_types.id')
$sum += $entry->getAmount(); ->where('amount', '>', 0)
} ->where('transaction_types.type', '=', 'Deposit')
->where('transaction_journals.date', '>=', $date->format('Y-m-d'))
->where('transaction_journals.date', '<=', $end->format('Y-m-d'))->sum('transactions.amount');
$sum = floatval($sum);
return $sum; return $sum;
} }
@ -54,16 +57,20 @@ class TransactionJournal implements TransactionJournalInterface, CUD, CommonData
* *
* @return float * @return float
*/ */
public function getSumOfExpensesByMonth(Carbon $date) { public function getSumOfExpensesByMonth(Carbon $date)
{
$end = clone $date; $end = clone $date;
$date->startOfMonth(); $date->startOfMonth();
$end->endOfMonth(); $end->endOfMonth();
$list = $this->getUser()->transactionjournals()->transactionTypes(['Withdrawal'])->before($end)->after($date)->get(['transaction_journals.*']);
$sum = 0; $sum = \DB::table('transactions')
/** @var \TransactionJournal $entry */ ->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
foreach ($list as $entry) { ->leftJoin('transaction_types', 'transaction_journals.transaction_type_id', '=', 'transaction_types.id')
$sum += $entry->getAmount(); ->where('amount', '>', 0)
} ->where('transaction_types.type', '=', 'Withdrawal')
->where('transaction_journals.date', '>=', $date->format('Y-m-d'))
->where('transaction_journals.date', '<=', $end->format('Y-m-d'))->sum('transactions.amount');
$sum = floatval($sum);
return $sum; return $sum;
} }

View File

@ -50,11 +50,13 @@ class TransactionJournal extends Ardent
*/ */
public function getAmount() public function getAmount()
{ {
foreach ($this->transactions as $t) { foreach ($this->transactions as $t) {
if (floatval($t->amount) > 0) { if (floatval($t->amount) > 0) {
return floatval($t->amount); return floatval($t->amount);
} }
} }
return -0.01;
} }
/** /**