File: /var/www/html/sarvodayahospital/app/Models/DoctorVideo.php
<?php
namespace App\Models;
use App\Scopes\isPublishedScope;
use Illuminate\Database\Eloquent\Model;
class DoctorVideo extends Model
{
protected $with = ['specialities', 'doctors'];
protected static function booted()
{
return static::addGlobalScope(new isPublishedScope());
}
public function getYoutubeURLAttribute()
{
$link = $this->YoutubeVideoCode;
$video_id = explode('?v=', $link);
if (empty($video_id[1])) {
$video_id = explode('?vi=', $link);
}
if (empty($video_id[1])) {
$video_id = explode('/v/', $link);
}
if (empty($video_id[1])) {
$video_id = explode('/vi/', $link);
}
if (empty($video_id[1])) {
$video_id = explode('/embed/', $link);
}
if (empty($video_id[1])) {
$video_id = explode('/shorts/', $link);
}
if (empty($video_id[1])) {
$video_id = explode('youtu.be/', $link);
}
if (empty($video_id[1])) {
if (strpos($link, '/') !== false) {
$video_id = end(explode('/', $link));
$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;
}
public function specialities()
{
return $this->belongsTo(Speciality::class, 'Speciality', 'id')
->select('id', 'SpecialityName', 'Slug');
}
public function doctors()
{
return $this->belongsTo(Doctor::class, 'Doctor', 'id');
}
public function seoComponent()
{
return $this->hasOneThrough(
SEOComponent::class,
DoctorVideoComponent::class,
'doctor_video_id',
'id',
'id',
'component_id'
)
->where('field', 'SEO')
->where('component_type', 'components_seo_seos');
}
}