File: /var/www/html/sarvodayahospital/app/Models/Hospital.php
<?php
namespace App\Models;
use App\Scopes\isPublishedScope;
use Illuminate\Database\Eloquent\Model;
class Hospital extends Model
{
protected $with = ['media', 'testimonials', 'specialities'];
protected $hidden = ['published_at', 'created_by', 'updated_by', 'created_at', 'updated_at'];
protected static function booted()
{
return static::addGlobalScope(new isPublishedScope());
}
public function testimonials() {
return $this->hasMany(Testimonial::class, 'Hospital');
}
public function getYoutubeLinkAttribute($value)
{
if (!is_null($value) && $value != '') {
$video_id = explode('?v=', $value);
if (empty($video_id[1])) {
$video_id = explode('?vi=', $value);
}
if (empty($video_id[1])) {
$video_id = explode('/v/', $value);
}
if (empty($video_id[1])) {
$video_id = explode('/vi/', $value);
}
if (empty($video_id[1])) {
$video_id = explode('/embed/', $value);
}
if (empty($video_id[1])) {
$video_id = explode('/shorts/', $value);
}
if (empty($video_id[1])) {
$video_id = explode('youtu.be/', $value);
}
if (empty($video_id[1])) {
if (strpos($value, '/') !== false) {
$video_id = end(explode('/', $value));
$video_id = explode('?', $video_id); // Deleting any other params
if (is_array($video_id)) {
$video_id = $video_id[0];
}
return $video_id;
}
}
if (is_array($video_id)) {
$video_id = explode('?', $video_id[1]); // Deleting any other params
if (is_array($video_id)) {
$video_id = $video_id[0];
}
$video_id = explode('&', $video_id); // Deleting any other params
if (is_array($video_id)) {
$video_id = $video_id[0];
}
}
return $video_id;
} else {
return null;
}
}
public function doctors()
{
return $this->belongsToMany(
Doctor::class,
'doctors__hospitals',
'hospital_id',
'doctor_id'
)->orderBy('Weight', 'ASC');
}
public function specialities()
{
return $this->belongsToMany(
Speciality::class,
'hospitals__specialities',
'hospital_id',
'speciality_id'
);
}
public function technologies()
{
return $this->belongsToMany(
Technology::class,
'hospitals__technologies',
'hospital_id',
'technology_id'
)->select([
'technologies.id',
'technologies.Title',
'technologies.Description',
'technologies.ShortDescription',
'technologies.Slug',
'technologies.Weight',
])
->orderBy('technologies.Weight', 'ASC');
}
public function media()
{
return $this->hasOneThrough(
Media::class,
MediaMorph::class,
'related_id',
'id',
'id',
'upload_file_id'
)
->where('related_type', 'hospitals')
->where('field', 'Photo')
->orderBy('order')
->select('upload_file.id', 'name', 'url', 'formats');
}
public function career()
{
return $this->belongsToMany(
Career::class,
'career_job_posts__localities',
'hospital_id',
'career_job_post_id',
);
}
public function seoComponent()
{
return $this->hasOneThrough(
SEOComponent::class,
HospitalComponent::class,
'hospital_id',
'id',
'id',
'component_id'
)
->where("field", "SEO")
->where("component_type", "components_seo_seos");
}
}