mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Add tag count to journal for easier amount calculations [skip ci]
This commit is contained in:
parent
e36717259b
commit
1e86794416
@ -96,6 +96,32 @@ class Tag extends Model
|
|||||||
return ['created_at', 'updated_at', 'date'];
|
return ['created_at', 'updated_at', 'date'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save the model to the database.
|
||||||
|
*
|
||||||
|
* @param array $options
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function save(array $options = [])
|
||||||
|
{
|
||||||
|
foreach ($this->transactionjournals()->get() as $journal) {
|
||||||
|
$count = $journal->tags()->count();
|
||||||
|
$journal->tag_count = $count;
|
||||||
|
$journal->save();
|
||||||
|
}
|
||||||
|
parent::save($options);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @codeCoverageIgnore
|
||||||
|
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
|
||||||
|
*/
|
||||||
|
public function transactionjournals()
|
||||||
|
{
|
||||||
|
return $this->belongsToMany('FireflyIII\Models\TransactionJournal');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @codeCoverageIgnore
|
* @codeCoverageIgnore
|
||||||
*
|
*
|
||||||
@ -140,15 +166,6 @@ class Tag extends Model
|
|||||||
$this->attributes['tag'] = Crypt::encrypt($value);
|
$this->attributes['tag'] = Crypt::encrypt($value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @codeCoverageIgnore
|
|
||||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
|
|
||||||
*/
|
|
||||||
public function transactionjournals()
|
|
||||||
{
|
|
||||||
return $this->belongsToMany('FireflyIII\Models\TransactionJournal');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @codeCoverageIgnore
|
* @codeCoverageIgnore
|
||||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||||
|
@ -72,12 +72,16 @@ use Watson\Validating\ValidatingTrait;
|
|||||||
* @method static \FireflyIII\Models\TransactionJournal orderBy
|
* @method static \FireflyIII\Models\TransactionJournal orderBy
|
||||||
* @method static \FireflyIII\Models\TransactionJournal|null first
|
* @method static \FireflyIII\Models\TransactionJournal|null first
|
||||||
* @property-read mixed $source_account
|
* @property-read mixed $source_account
|
||||||
|
* @property integer $tag_count
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\TransactionJournal whereTagCount($value)
|
||||||
*/
|
*/
|
||||||
class TransactionJournal extends Model
|
class TransactionJournal extends Model
|
||||||
{
|
{
|
||||||
use SoftDeletes, ValidatingTrait;
|
use SoftDeletes, ValidatingTrait;
|
||||||
|
|
||||||
protected $fillable = ['user_id', 'transaction_type_id', 'bill_id', 'transaction_currency_id', 'description', 'completed', 'date', 'encrypted'];
|
|
||||||
|
protected $fillable
|
||||||
|
= ['user_id', 'transaction_type_id', 'bill_id', 'transaction_currency_id', 'description', 'completed', 'date', 'encrypted', 'tag_count'];
|
||||||
protected $hidden = ['encrypted'];
|
protected $hidden = ['encrypted'];
|
||||||
protected $rules
|
protected $rules
|
||||||
= [
|
= [
|
||||||
@ -154,7 +158,7 @@ class TransactionJournal extends Model
|
|||||||
$amount = $t->amount;
|
$amount = $t->amount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$count = $this->tags->count();
|
$count = $this->tags()->count();
|
||||||
|
|
||||||
if ($count === 1) {
|
if ($count === 1) {
|
||||||
// get amount for single tag:
|
// get amount for single tag:
|
||||||
@ -211,15 +215,6 @@ class TransactionJournal extends Model
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @codeCoverageIgnore
|
|
||||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
|
|
||||||
*/
|
|
||||||
public function tags()
|
|
||||||
{
|
|
||||||
return $this->belongsToMany('FireflyIII\Models\Tag');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $amount
|
* @param string $amount
|
||||||
*
|
*
|
||||||
@ -274,6 +269,29 @@ class TransactionJournal extends Model
|
|||||||
return ['created_at', 'updated_at', 'date', 'deleted_at'];
|
return ['created_at', 'updated_at', 'date', 'deleted_at'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save the model to the database.
|
||||||
|
*
|
||||||
|
* @param array $options
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function save(array $options = [])
|
||||||
|
{
|
||||||
|
$count = $this->tags()->count();
|
||||||
|
$this->tag_count = $count;
|
||||||
|
parent::save($options);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @codeCoverageIgnore
|
||||||
|
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
|
||||||
|
*/
|
||||||
|
public function tags()
|
||||||
|
{
|
||||||
|
return $this->belongsToMany('FireflyIII\Models\Tag');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @codeCoverageIgnore
|
* @codeCoverageIgnore
|
||||||
*
|
*
|
||||||
@ -418,7 +436,7 @@ class TransactionJournal extends Model
|
|||||||
$query->with(
|
$query->with(
|
||||||
['transactions' => function (HasMany $q) {
|
['transactions' => function (HasMany $q) {
|
||||||
$q->orderBy('amount', 'ASC');
|
$q->orderBy('amount', 'ASC');
|
||||||
}, 'transactiontype', 'transactioncurrency', 'budgets', 'categories', 'transactions.account.accounttype', 'bill', 'budgets', 'categories']
|
}, 'transactionType', 'transactionCurrency', 'budgets', 'categories', 'transactions.account.accounttype', 'bill']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
39
database/migrations/2015_06_14_093841_changes_for_v345.php
Normal file
39
database/migrations/2015_06_14_093841_changes_for_v345.php
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class ChangesForV345
|
||||||
|
*/
|
||||||
|
class ChangesForV345 extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::table(
|
||||||
|
'transaction_journals', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('tag_count');
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Schema::table(
|
||||||
|
'transaction_journals', function (Blueprint $table) {
|
||||||
|
$table->smallInteger('tag_count', false, true)->default(0);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user