196 lines
3.6 KiB
XML
196 lines
3.6 KiB
XML
<snippet>
|
|
<content><![CDATA[
|
|
use App\Models\Traits\HasUidTrait;
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
|
use Illuminate\Database\Eloquent\Prunable;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
use Laravel\Scout\Searchable;
|
|
|
|
use HasUidTrait;
|
|
use Prunable;
|
|
use Searchable;
|
|
|
|
/** @var string */
|
|
protected \$table = '';
|
|
|
|
/** @var string */
|
|
protected \$keyType = 'string';
|
|
|
|
/** @var bool */
|
|
public \$incrementing = false;
|
|
|
|
/** @var array<int,string> */
|
|
protected \$fillable = [];
|
|
|
|
/** @var array<int,string> */
|
|
protected \$hidden = [];
|
|
|
|
/** @var array<string,string> */
|
|
protected \$casts = [];
|
|
|
|
/** @var array<int,string> */
|
|
protected \$dates = [];
|
|
|
|
/** @var array<int,string> */
|
|
protected \$appends = [];
|
|
|
|
/** @var array<int,string> */
|
|
protected \$touches = [];
|
|
|
|
/** @var array<int,string> */
|
|
protected \$dispatchesEvents = [];
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Class Constants
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
//
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Custom/Private Methods
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
/**
|
|
* Get the prunable model query.
|
|
*
|
|
* @since 1.0.0
|
|
*
|
|
* @return \Illuminate\Database\Eloquent\Builder
|
|
*/
|
|
public function prunable(): Builder
|
|
{
|
|
//return static::where('created_at', '<=', now()->subMonth());
|
|
}
|
|
|
|
/**
|
|
* Prepare the model for pruning.
|
|
*
|
|
* @since 1.0.0
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function pruning(): void
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Get the value used to index the model.
|
|
*
|
|
* @since 1.0.0
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function getScoutKey()
|
|
{
|
|
return \$this->id;
|
|
}
|
|
|
|
/**
|
|
* Get the key name used to index the model.
|
|
*
|
|
* @since 1.0.0
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getScoutKeyName(): string
|
|
{
|
|
return 'id';
|
|
}
|
|
|
|
/**
|
|
* Get the name of the index associated with the model.
|
|
*
|
|
* @since 1.0.0
|
|
*
|
|
* @return string
|
|
*/
|
|
public function searchableAs(): string
|
|
{
|
|
return 'models_index';
|
|
}
|
|
|
|
/**
|
|
* Get the indexable data array for the model.
|
|
*
|
|
* @since 1.0.0
|
|
*
|
|
* @return array
|
|
*/
|
|
public function toSearchableArray(): array
|
|
{
|
|
\$payload = \$this->toArray();
|
|
|
|
// modify here...
|
|
|
|
return \$payload;
|
|
}
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Accessors
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
/**
|
|
* An accessor.
|
|
*
|
|
* @since 1.0.0
|
|
*
|
|
* @return \Illuminate\Database\Eloquent\Casts\Attribute
|
|
*/
|
|
protected function attrName(): Attribute
|
|
{
|
|
return Attribute::make(
|
|
get: fn (\$value, \$attributes) => \$attributes['foo'],
|
|
set: fn (\$value, \$attributes) => \$attributes['foo'],
|
|
);
|
|
}
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Mutators
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
//
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Scopes
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
//
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Relationships
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
public function something(): BelongsTo
|
|
{
|
|
return $this->belongsTo(
|
|
related: Something::class,
|
|
foreignKey: 'something_id',
|
|
);
|
|
}
|
|
]]></content>
|
|
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
|
|
<tabTrigger>laramodel</tabTrigger>
|
|
<!-- Optional: Set a scope to limit where the snippet will trigger -->
|
|
<!-- <scope>source.python</scope> -->
|
|
</snippet>
|