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;
|
||||
|
||||
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
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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).
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
'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,
|
||||
],
|
||||
|
||||
|
|
|
|||
|
|
@ -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