Revision 2 | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed
<?phpnamespace App\Models;use Illuminate\Database\Eloquent\Factories\HasFactory;use Illuminate\Database\Eloquent\Model;use Illuminate\Database\Eloquent\Relations\BelongsTo;use Illuminate\Database\Eloquent\Relations\HasMany;use Illuminate\Support\Facades\Cache;use Spatie\Sluggable\HasSlug;use Spatie\Sluggable\SlugOptions;/*** App\Models\Item** @property int $id* @property int|null $manufacturer_id* @property int|null $directory_id* @property int|null $shipping_group_id* @property string $name* @property string $slug* @property int $status* @property float $weight* @property string $description* @property string $ean* @property string|null $mpn* @property string $kennung* @property string $short_line_1* @property string $created_by* @property string $updated_by* @property \Illuminate\Support\Carbon|null $created_at* @property \Illuminate\Support\Carbon|null $updated_at* @property-read \App\Models\Manufacturer|null $manufacturer* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ItemMedium> $medium* @property-read int|null $medium_count* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Price> $price* @property-read int|null $price_count* @method static \Database\Factories\ItemFactory factory($count = null, $state = [])* @method static \Illuminate\Database\Eloquent\Builder|Item newModelQuery()* @method static \Illuminate\Database\Eloquent\Builder|Item newQuery()* @method static \Illuminate\Database\Eloquent\Builder|Item query()* @method static \Illuminate\Database\Eloquent\Builder|Item whereCreatedAt($value)* @method static \Illuminate\Database\Eloquent\Builder|Item whereCreatedBy($value)* @method static \Illuminate\Database\Eloquent\Builder|Item whereDescription($value)* @method static \Illuminate\Database\Eloquent\Builder|Item whereDirectoryId($value)* @method static \Illuminate\Database\Eloquent\Builder|Item whereEan($value)* @method static \Illuminate\Database\Eloquent\Builder|Item whereId($value)* @method static \Illuminate\Database\Eloquent\Builder|Item whereKennung($value)* @method static \Illuminate\Database\Eloquent\Builder|Item whereManufacturerId($value)* @method static \Illuminate\Database\Eloquent\Builder|Item whereMpn($value)* @method static \Illuminate\Database\Eloquent\Builder|Item whereName($value)* @method static \Illuminate\Database\Eloquent\Builder|Item whereShippingGroupId($value)* @method static \Illuminate\Database\Eloquent\Builder|Item whereShortLine1($value)* @method static \Illuminate\Database\Eloquent\Builder|Item whereSlug($value)* @method static \Illuminate\Database\Eloquent\Builder|Item whereStatus($value)* @method static \Illuminate\Database\Eloquent\Builder|Item whereUpdatedAt($value)* @method static \Illuminate\Database\Eloquent\Builder|Item whereUpdatedBy($value)* @method static \Illuminate\Database\Eloquent\Builder|Item whereWeight($value)* @mixin \Eloquent*/class Item extends Model{use HasFactory, HasSlug;/*** Get the options for generating the slug.*/public function getSlugOptions(): SlugOptions{return SlugOptions::create()->generateSlugsFrom( 'name' )->saveSlugsTo( 'slug' )->usingLanguage( 'de' )->doNotGenerateSlugsOnUpdate()->skipGenerateWhen( function (){return $this->directory_id < 0;} );}function medium(): HasMany{return $this->hasMany( ItemMedium::class )->orderBy( "rank" );}public function price(): HasMany{return $this->hasMany( Price::class )->where("preis","!=",0)->orderBy( "preis_index" );}public function manufacturer(): BelongsTo{return $this->belongsTo( Manufacturer::class );}// On the Model class add the following method.public function resolveRouteBinding( $value, $field = null ): ?Model{$cacheName = "item_" . $value;if ( Cache::has( $cacheName ) ){return Cache::get( $cacheName );}$result = $this->with( 'price', 'medium.medium', 'manufacturer' )->where( 'slug', $value )->firstOrFail();Cache::put( $cacheName, $result, 86400 );return $result;}}