Add groups, and the option for objects to be linked to one (or more) groups. #3128

This commit is contained in:
James Cole 2020-06-05 06:25:39 +02:00
parent 07c7bf1d49
commit 61e24a41a2
4 changed files with 93 additions and 1 deletions

View File

@ -0,0 +1,21 @@
<?php
declare(strict_types=1);
namespace FireflyIII\Models;
use Illuminate\Database\Eloquent\Model;
/**
* Class ObjectGroup
*/
class ObjectGroup extends Model
{
/**
* @return \Illuminate\Database\Eloquent\Relations\MorphToMany
*/
public function piggyBanks()
{
return $this->morphedByMany(PiggyBank::class, 'object_groupable');
}
}

View File

@ -126,6 +126,14 @@ class PiggyBank extends Model
throw new NotFoundHttpException;
}
/**
* Get all of the tags for the post.
*/
public function objectGroups()
{
return $this->morphToMany(ObjectGroup::class, 'object_groupable');
}
/**
* @codeCoverageIgnore
* @return MorphMany

View File

@ -145,7 +145,7 @@ return [
'encryption' => null === env('USE_ENCRYPTION') || true === env('USE_ENCRYPTION'),
'version' => '5.2.6',
'api_version' => '1.1.0',
'db_version' => 13,
'db_version' => 14,
'maxUploadSize' => 15242880,
'send_error_message' => env('SEND_ERROR_MESSAGE', true),
'site_owner' => env('SITE_OWNER', ''),

View File

@ -0,0 +1,63 @@
<?php
declare(strict_types=1);
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
/**
* Class ChangesForV530
*/
class ChangesForV530 extends Migration
{
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table(
'users', static function (Blueprint $table) {
$table->dropColumn('provider');
}
);
Schema::dropIfExists('object_groupables');
Schema::dropIfExists('object_groups');
}
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table(
'users', static function (Blueprint $table) {
$table->string('provider', 50)->nullable();
}
);
if (!Schema::hasTable('object_groups')) {
Schema::create(
'object_groups', static function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->softDeletes();
$table->string('title', 255);
$table->mediumInteger('order', false, true)->default(0);
}
);
}
if (!Schema::hasTable('object_groupables')) {
Schema::create(
'object_groupables', static function (Blueprint $table) {
$table->integer('object_group_id');
$table->integer('object_groupable_id', false, true);
$table->string('object_groupable_type', 255);
}
);
}
}
}