HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/stafa.komma.pro/app/Komma/Components/Component/Component.php
<?php


namespace App\Komma\Components\Component;


use App\Komma\Assortments\Models\Assortment;
use App\Komma\Documents\DocumentsTrait;
use App\Komma\Documents\Kms\DocumentableInterface;
use App\Komma\Components\ComponentArea\ComponentArea;
use App\Komma\Pages\Models\Page;
use App\Komma\Shop\Products\Product\Product;
use App\Komma\Testimonials\Models\Testimonial;
use App\Komma\Users\Models\SiteUser;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\MorphToMany;

/**
 * App\Komma\Components\Component\Component
 *
 * @property int $id
 * @property int $component_type_id
 * @property int $component_area_id
 * @property int $sort_order
 * @property string $version
 * @property string $data
 * @property \Illuminate\Support\Carbon|null $created_at
 * @property \Illuminate\Support\Carbon|null $updated_at
 * @property-read \App\Komma\Components\ComponentArea\ComponentArea $componentArea
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Components\Component\Component whereComponentAreaId($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Components\Component\Component whereComponentTypeId($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Components\Component\Component whereCreatedAt($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Components\Component\Component whereData($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Components\Component\Component whereId($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Components\Component\Component whereSortOrder($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Components\Component\Component whereUpdatedAt($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Components\Component\Component whereVersion($value)
 * @mixin \Eloquent
 * @property int|null $linkable_id
 * @property string|null $linkable_type
 * @property-read \Illuminate\Database\Eloquent\Collection|\App\Komma\Documents\Models\Document[] $documents
 * @property-read \Illuminate\Database\Eloquent\Collection|\App\Komma\Documents\Models\Document[] $images
 * @property-read \Illuminate\Database\Eloquent\Model|\Eloquent $linkable
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Components\Component\Component whereLinkableId($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Components\Component\Component whereLinkableType($value)
 * @property-read \Illuminate\Database\Eloquent\Collection|\App\Komma\Pages\Models\Page[] $pages
 * @property-read \Illuminate\Database\Eloquent\Collection|\App\Komma\Users\Models\KmsUser[] $users
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Components\Component\Component newModelQuery()
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Components\Component\Component newQuery()
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Components\Component\Component query()
 * @property-read \Illuminate\Database\Eloquent\Collection|\App\Komma\Shop\Products\Product\Product[] $products
 */
class Component extends Model implements DocumentableInterface
{
    use DocumentsTrait;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['component_area_id', 'component_type_id', 'sort_order', 'version', 'data'];

    /**
     * @return BelongsTo
     */
    public function componentArea(): BelongsTo {
        return $this->belongsTo(ComponentArea::class);
    }

    //Polymorphic relations below this line. Safety goggles on please.
    public function users(): MorphToMany
    {
        return $this->morphedByMany(SiteUser::class, 'componentable');
    }

    public function pages(): MorphToMany
    {
        return $this->morphedByMany(Page::class, 'componentable');
    }

    public function products(): MorphToMany
    {
        return $this->morphedByMany(Product::class, 'componentable');
    }

    public function buttons(): MorphToMany
    {
        return $this->morphedByMany(Button::class, 'componentable');
    }

    public function servicepoints(): MorphToMany
    {
        return $this->morphedByMany(Servicepoint::class, 'componentable');
    }

    public function testimonials(): MorphToMany
    {
        return $this->morphedByMany(Testimonial::class, 'componentable');
    }

    public function assortments(): MorphToMany
    {
        return $this->morphedByMany(Assortment::class, 'componentable');
    }
}