I am using Trait for one model in Laravel 7.
namespace App;
use App\Traits\AutoFieldTrait;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
use Spatie\MediaLibrary\MediaCollections\Models\Media;
class BlogPost extends Model implements HasMedia
{
use AutoFieldTrait;
use InteractsWithMedia;
public function fun1() { ... }
public function fun2() { ... }
public function registerMediaConversions(Media $media = null): void
{
$this->addMediaConversion('thumb')
->width(368)
->height(232)
->sharpen(10);
}
}
AutoFieldTrait
is to add one additional where
clause automatically.
I want it for fun1()
and fun2(),
but I don't want to it will be applied to registerMediaConversions()
.
Is there any way to exclude some functions from trait?
Here is AutoFieldTrait
.
<?php
namespace App\Traits;
trait AutoFieldTrait{
public static function bootAutoFieldTrait()
{
static::addGlobalScope(new AutoFieldScope());
}
}
namespace App\Traits;
use Illuminate\Database\Query\Builder as BaseBuilder;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Scope;
use Illuminate\Database\Eloquent\Model;
class AutoFieldScope implements Scope {
public function apply(Builder $builder, Model $model)
{
$builder->where('user_id', '=', auth()->user()->id);
}
}
And registerMediaConversions()
is from laravel-medialibrary package.
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire