mirror of https://github.com/kcal-app/kcal.git
Override Tag class in app models
This commit is contained in:
parent
49f8536831
commit
9413fa7686
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
namespace App\JsonApi\Adapters;
|
namespace App\JsonApi\Adapters;
|
||||||
|
|
||||||
|
use App\Models\Tag;
|
||||||
use CloudCreativity\LaravelJsonApi\Eloquent\AbstractAdapter;
|
use CloudCreativity\LaravelJsonApi\Eloquent\AbstractAdapter;
|
||||||
use CloudCreativity\LaravelJsonApi\Pagination\StandardStrategy;
|
use CloudCreativity\LaravelJsonApi\Pagination\StandardStrategy;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
use Spatie\Tags\Tag;
|
|
||||||
|
|
||||||
class TagAdapter extends AbstractAdapter
|
class TagAdapter extends AbstractAdapter
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,12 @@ namespace App\Models;
|
||||||
use App\Models\Traits\Ingredient;
|
use App\Models\Traits\Ingredient;
|
||||||
use App\Models\Traits\Journalable;
|
use App\Models\Traits\Journalable;
|
||||||
use App\Models\Traits\Sluggable;
|
use App\Models\Traits\Sluggable;
|
||||||
|
use App\Models\Traits\Taggable;
|
||||||
use App\Support\Number;
|
use App\Support\Number;
|
||||||
use ElasticScoutDriverPlus\QueryDsl;
|
use ElasticScoutDriverPlus\QueryDsl;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Laravel\Scout\Searchable;
|
use Laravel\Scout\Searchable;
|
||||||
use Spatie\Tags\HasTags;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* App\Models\Food
|
* App\Models\Food
|
||||||
|
|
@ -77,12 +77,12 @@ use Spatie\Tags\HasTags;
|
||||||
final class Food extends Model
|
final class Food extends Model
|
||||||
{
|
{
|
||||||
use HasFactory;
|
use HasFactory;
|
||||||
use HasTags;
|
|
||||||
use Ingredient;
|
use Ingredient;
|
||||||
use Journalable;
|
use Journalable;
|
||||||
use QueryDsl;
|
use QueryDsl;
|
||||||
use Searchable;
|
use Searchable;
|
||||||
use Sluggable;
|
use Sluggable;
|
||||||
|
use Taggable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @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).
|
* Get the serving size as a formatted string (e.g. 0.5 = 1/2).
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ use App\Models\Traits\HasIngredients;
|
||||||
use App\Models\Traits\Ingredient;
|
use App\Models\Traits\Ingredient;
|
||||||
use App\Models\Traits\Journalable;
|
use App\Models\Traits\Journalable;
|
||||||
use App\Models\Traits\Sluggable;
|
use App\Models\Traits\Sluggable;
|
||||||
|
use App\Models\Traits\Taggable;
|
||||||
use ElasticScoutDriverPlus\QueryDsl;
|
use ElasticScoutDriverPlus\QueryDsl;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
@ -16,7 +17,6 @@ use Spatie\Image\Manipulations;
|
||||||
use Spatie\MediaLibrary\HasMedia;
|
use Spatie\MediaLibrary\HasMedia;
|
||||||
use Spatie\MediaLibrary\InteractsWithMedia;
|
use Spatie\MediaLibrary\InteractsWithMedia;
|
||||||
use Spatie\MediaLibrary\MediaCollections\Models\Media;
|
use Spatie\MediaLibrary\MediaCollections\Models\Media;
|
||||||
use Spatie\Tags\HasTags;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* App\Models\Recipe
|
* App\Models\Recipe
|
||||||
|
|
@ -80,13 +80,13 @@ final class Recipe extends Model implements HasMedia
|
||||||
{
|
{
|
||||||
use HasFactory;
|
use HasFactory;
|
||||||
use HasIngredients;
|
use HasIngredients;
|
||||||
use HasTags;
|
|
||||||
use Ingredient;
|
use Ingredient;
|
||||||
use InteractsWithMedia;
|
use InteractsWithMedia;
|
||||||
use Journalable;
|
use Journalable;
|
||||||
use QueryDsl;
|
use QueryDsl;
|
||||||
use Searchable;
|
use Searchable;
|
||||||
use Sluggable;
|
use Sluggable;
|
||||||
|
use Taggable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Spatie\Tags\Tag as TagBase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* App\Models\Tag
|
||||||
|
*
|
||||||
|
* @property int $id
|
||||||
|
* @property array $name
|
||||||
|
* @property array $slug
|
||||||
|
* @property string|null $type
|
||||||
|
* @property int|null $order_column
|
||||||
|
* @property \Illuminate\Support\Carbon|null $created_at
|
||||||
|
* @property \Illuminate\Support\Carbon|null $updated_at
|
||||||
|
* @property-read array $translations
|
||||||
|
* @method static Builder|Tag containing(string $name, $locale = null)
|
||||||
|
* @method static \Database\Factories\TagFactory factory(...$parameters)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|Tag newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|Tag newQuery()
|
||||||
|
* @method static Builder|Tag ordered(string $direction = 'asc')
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|Tag query()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|Tag whereCreatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|Tag whereId($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|Tag whereName($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|Tag whereOrderColumn($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|Tag whereSlug($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|Tag whereType($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|Tag whereUpdatedAt($value)
|
||||||
|
* @method static Builder|Tag withType(?string $type = null)
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
|
final class Tag extends TagBase
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models\Traits;
|
||||||
|
|
||||||
|
use App\Models\Tag;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\MorphToMany;
|
||||||
|
use Spatie\Tags\HasTags;
|
||||||
|
|
||||||
|
trait Taggable
|
||||||
|
{
|
||||||
|
use HasTags;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use local app Tag class.
|
||||||
|
*/
|
||||||
|
public static function getTagClassName(): string
|
||||||
|
{
|
||||||
|
return Tag::class;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tell `tags` method to use app Tag class.
|
||||||
|
*/
|
||||||
|
public function tags(): MorphToMany
|
||||||
|
{
|
||||||
|
return $this
|
||||||
|
->morphToMany(self::getTagClassName(), 'taggable', 'taggables', null, 'tag_id')
|
||||||
|
->orderBy('order_column');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -72,7 +72,7 @@ return [
|
||||||
'journal-entries' => \App\Models\JournalEntry::class,
|
'journal-entries' => \App\Models\JournalEntry::class,
|
||||||
'recipes' => \App\Models\Recipe::class,
|
'recipes' => \App\Models\Recipe::class,
|
||||||
'recipe-steps' => \App\Models\RecipeStep::class,
|
'recipe-steps' => \App\Models\RecipeStep::class,
|
||||||
'tags' => \Spatie\Tags\Tag::class,
|
'tags' => \App\Models\Tag::class,
|
||||||
'users' => \App\Models\User::class,
|
'users' => \App\Models\User::class,
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Database\Factories;
|
||||||
|
|
||||||
|
use App\Models\Tag;
|
||||||
|
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||||
|
|
||||||
|
class TagFactory extends Factory
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected $model = Tag::class;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function definition(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'name' => $this->faker->word,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue