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/Blog.php
<?php

namespace App\Models;

use App\Scopes\isActiveScope;
use App\Scopes\isPublishedScope;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;

class Blog extends Model
{
    protected $with = ['media', 'doctorInfo', 'specialities'];

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

    protected $fillable = [
        'Title',
        'Slug',
        'Description',
        'ShortDescription',
        'Doctor',
        'BlogDate',
        'published_at',
        'created_by',
        'updated_by',
    ];

    public function getTitleAttribute($value)
    {
        return html_entity_decode($value);
    }

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

    public function doctorInfo()
    {
        return $this->belongsTo(Doctor::class, 'Doctor', 'id')
            ->without('specialities', 'gender', 'blogs', 'hospitals')
            ->select('id', 'DoctorName', 'Slug', 'CurrentDesignation');
    }

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

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

    public function getPublishedAtAttribute($value)
    {
        return Carbon::parse($value)->format('M d, Y');
    }

    public static function findBySlug($slug) {
        return static::query()
            ->where('Slug', $slug)
            ->firstOrFail();
    }

    public static function getDoctorBlog($doctor_id, $slug) {
        return static::query()
            ->with('doctorInfo')
            ->whereHas('doctorInfo', function($query) use($doctor_id) {
                $query->where('id', $doctor_id);
            })
            ->where('Slug', '!=', $slug)
            ->take(3)
            ->get();
    }

    public static function getRecentBlog($limit = 10) {
        return static::query()
            ->orderBy('published_at', 'ASC')
            ->take($limit)
            ->get();
    }
}