HEX
Server: Apache/2.4.46 (Ubuntu)
System: Linux localhost 5.11.0-49-generic #55-Ubuntu SMP Wed Jan 12 17:36:34 UTC 2022 x86_64
User: root (0)
PHP: 7.4.16
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/sarvodayahospital/app/Models/Speciality.php
<?php

namespace App\Models;

use App\Scopes\isActiveScope;
use App\Scopes\isPublishedScope;
use App\Scopes\OtherSpecialityScope;
use Illuminate\Database\Eloquent\Model;
use Staudenmeir\EloquentEagerLimit\HasEagerLimit;

class Speciality extends Model
{
    use HasEagerLimit;

    protected $with = ['media'];

    protected $hidden = ['published_at', 'created_by', 'updated_by', 'created_at', 'updated_at'];

    protected static function booted()
    {
        static::addGlobalScope(new isActiveScope());
        static::addGlobalScope(new isPublishedScope());
        static::addGlobalScope(new OtherSpecialityScope());
    }

    public function doctors()
    {
        return $this->belongsToMany(
            Doctor::class,
            'doctors__specialities',
            'speciality_id',
            'doctor_id'
        )->orderBy('Weight', 'ASC');
    }

    public function hospitals()
    {
        return $this->belongsToMany(
            Hospital::class,
            'specialities__hospitals',
            'speciality_id',
            'hospital_id'
        );
    }

    public function technologies()
    {
        return $this->belongsToMany(
            Technology::class,
            'specialities__technologies',
            'speciality_id',
            'technology_id'
        );
    }

    public function procedures()
    {
        return $this->belongsToMany(
            Procedure::class,
            'specialities__procedures',
            'speciality_id',
            'procedure_id'
        );
    }

    public function testimonials()
    {
        return $this->belongsToMany(
            Testimonial::class,
            'specialities__testimonials',
            'speciality_id',
            'testimonial_id'
        );
    }

    public function treatments()
    {
        return $this->belongsToMany(
            Treatment::class,
            'specialities__treatments',
            'speciality_id',
            'treatment_id'
        );
    }

    public function SubSpecialities()
    {
        return $this->belongsToMany(
            Speciality::class,
            'specialities__sub_specialities',
            'speciality_id',
            'related_speciality_id'
        );
    }

    public function ss()
    {
        return $this->belongsToMany(
            Speciality::class,
            'specialities__sub_specialities',
            'speciality_id',
            'related_speciality_id'
        )->select('Slug');
    }

    public function media()
    {
        return $this->hasOneThrough(
            Media::class,
            MediaMorph::class,
            'related_id',
            'id',
            'id',
            'upload_file_id'
        )
            ->where('related_type', 'specialities')
            ->where('field', 'SpecialityIcon')
            ->orderBy('order')
            ->select('upload_file_morph.id', 'name', 'url', 'formats');
    }

    public function banner()
    {
        return $this->hasOneThrough(
            Media::class,
            MediaMorph::class,
            'related_id',
            'id',
            'id',
            'upload_file_id'
        )
            ->where('related_type', 'specialities')
            ->where('field', 'Banner')
            ->orderBy('order')
            ->select('upload_file_morph.id', 'name', 'url', 'formats');
    }

    public function mobileBanner()
    {
        return $this->hasOneThrough(
            Media::class,
            MediaMorph::class,
            'related_id',
            'id',
            'id',
            'upload_file_id'
        )
            ->where('related_type', 'specialities')
            ->where('field', 'MobileBanner')
            ->orderBy('order')
            ->select('upload_file_morph.id', 'name', 'url', 'formats');
    }

    public function blogs()
    {
        return $this->belongsToMany(
            Speciality::class,
            'blogs__specialities',
            'speciality_id',
            'blog_id'
        )->select('SpecialityName', 'Slug');
    }

    public function seoComponent()
    {
        return $this->hasOneThrough(
            SEOComponent::class,
            SpecialityComponent::class,
            'speciality_id',
            'id',
            'id',
            'component_id'
        )->where('field', 'SEO')
            ->where('component_type', 'components_seo_seos');
    }

    public function faqs()
    {
        return $this->hasManyThrough(
            FAQ::class,
            SpecialityComponent::class,
            'speciality_id',
            'id',
            'id',
            'component_id'
        )->where('field', 'FAQ')
            ->where('component_type', 'components_faq_faqs')
            ->orderBy('order');
    }

    public function scopeOrderByWeightASC($query)
    {
        return $query->orderBy('Weight', 'ASC');
    }

    public function researchPublications()
    {
        return $this->hasMany(ResearchPublication::class, 'SpecialityID');
    }
}