コード例 #1
0
 /**
  * This method returns the oldest journal or transaction date known to this budget.
  * Will cache result.
  *
  * @param Budget $budget
  *
  * @return Carbon
  */
 public function firstUseDate(Budget $budget) : Carbon
 {
     $oldest = Carbon::create()->startOfYear();
     $journal = $budget->transactionJournals()->orderBy('date', 'ASC')->first();
     if (!is_null($journal)) {
         $oldest = $journal->date < $oldest ? $journal->date : $oldest;
     }
     $transaction = $budget->transactions()->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.id')->orderBy('transaction_journals.date', 'ASC')->first(['transactions.*', 'transaction_journals.date']);
     if (!is_null($transaction)) {
         $carbon = new Carbon($transaction->date);
         $oldest = $carbon < $oldest ? $carbon : $oldest;
     }
     return $oldest;
 }