From 9413fa7686027dcffb2b11c0b949da3f9f1cd5e3 Mon Sep 17 00:00:00 2001 From: "Christopher C. Wells" Date: Wed, 31 Mar 2021 20:12:26 -0700 Subject: [PATCH] Override Tag class in app models --- app/JsonApi/Adapters/TagAdapter.php | 2 +- app/Models/Food.php | 12 +++++++-- app/Models/Recipe.php | 4 +-- app/Models/Tag.php | 38 +++++++++++++++++++++++++++++ app/Models/Traits/Taggable.php | 30 +++++++++++++++++++++++ config/json-api-v1.php | 2 +- database/factories/TagFactory.php | 24 ++++++++++++++++++ 7 files changed, 106 insertions(+), 6 deletions(-) create mode 100644 app/Models/Tag.php create mode 100644 app/Models/Traits/Taggable.php create mode 100644 database/factories/TagFactory.php diff --git a/app/JsonApi/Adapters/TagAdapter.php b/app/JsonApi/Adapters/TagAdapter.php index e3e136d..31d0c21 100644 --- a/app/JsonApi/Adapters/TagAdapter.php +++ b/app/JsonApi/Adapters/TagAdapter.php @@ -2,10 +2,10 @@ namespace App\JsonApi\Adapters; +use App\Models\Tag; use CloudCreativity\LaravelJsonApi\Eloquent\AbstractAdapter; use CloudCreativity\LaravelJsonApi\Pagination\StandardStrategy; use Illuminate\Support\Collection; -use Spatie\Tags\Tag; class TagAdapter extends AbstractAdapter { diff --git a/app/Models/Food.php b/app/Models/Food.php index d81136a..618b2e7 100644 --- a/app/Models/Food.php +++ b/app/Models/Food.php @@ -5,12 +5,12 @@ namespace App\Models; use App\Models\Traits\Ingredient; use App\Models\Traits\Journalable; use App\Models\Traits\Sluggable; +use App\Models\Traits\Taggable; use App\Support\Number; use ElasticScoutDriverPlus\QueryDsl; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Laravel\Scout\Searchable; -use Spatie\Tags\HasTags; /** * App\Models\Food @@ -77,12 +77,12 @@ use Spatie\Tags\HasTags; final class Food extends Model { use HasFactory; - use HasTags; use Ingredient; use Journalable; use QueryDsl; use Searchable; use Sluggable; + use Taggable; /** * @inheritdoc @@ -154,6 +154,14 @@ final class Food extends Model ]; } + /** + * @inheritdoc + */ + public static function getTagClassName(): string + { + return Tag::class; + } + /** * Get the serving size as a formatted string (e.g. 0.5 = 1/2). */ diff --git a/app/Models/Recipe.php b/app/Models/Recipe.php index ad6089e..8b6e440 100644 --- a/app/Models/Recipe.php +++ b/app/Models/Recipe.php @@ -6,6 +6,7 @@ use App\Models\Traits\HasIngredients; use App\Models\Traits\Ingredient; use App\Models\Traits\Journalable; use App\Models\Traits\Sluggable; +use App\Models\Traits\Taggable; use ElasticScoutDriverPlus\QueryDsl; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -16,7 +17,6 @@ use Spatie\Image\Manipulations; use Spatie\MediaLibrary\HasMedia; use Spatie\MediaLibrary\InteractsWithMedia; use Spatie\MediaLibrary\MediaCollections\Models\Media; -use Spatie\Tags\HasTags; /** * App\Models\Recipe @@ -80,13 +80,13 @@ final class Recipe extends Model implements HasMedia { use HasFactory; use HasIngredients; - use HasTags; use Ingredient; use InteractsWithMedia; use Journalable; use QueryDsl; use Searchable; use Sluggable; + use Taggable; /** * @inheritdoc diff --git a/app/Models/Tag.php b/app/Models/Tag.php new file mode 100644 index 0000000..371c364 --- /dev/null +++ b/app/Models/Tag.php @@ -0,0 +1,38 @@ +morphToMany(self::getTagClassName(), 'taggable', 'taggables', null, 'tag_id') + ->orderBy('order_column'); + } +} diff --git a/config/json-api-v1.php b/config/json-api-v1.php index 518a613..bef6db0 100644 --- a/config/json-api-v1.php +++ b/config/json-api-v1.php @@ -72,7 +72,7 @@ return [ 'journal-entries' => \App\Models\JournalEntry::class, 'recipes' => \App\Models\Recipe::class, 'recipe-steps' => \App\Models\RecipeStep::class, - 'tags' => \Spatie\Tags\Tag::class, + 'tags' => \App\Models\Tag::class, 'users' => \App\Models\User::class, ], diff --git a/database/factories/TagFactory.php b/database/factories/TagFactory.php new file mode 100644 index 0000000..92d5375 --- /dev/null +++ b/database/factories/TagFactory.php @@ -0,0 +1,24 @@ + $this->faker->word, + ]; + } +}