File: /home/armgroup/libs/app/Models/Banner.php
<?php
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Banner extends Model
{
use HasFactory;
protected $guarded = ['id'];
public function items()
{
return $this->hasMany(BannerItem::class)
->orderByRaw('ISNULL(sort_order), sort_order ASC');
}
public function activeItems()
{
return $this->items()
->where('limitation', false)->orWhere(function ($q) {
return $q->where('started_at', '<=', Carbon::now())->where('ended_at', '>=', Carbon::now());
});
}
public static function getBanner(string $position)
{
return static::where('position', $position)
->where('status', true)
->select('id', 'name')
->with('activeItems:banner_id,title,image,url,description')
->first();
}
public static function getBanners(array $positions)
{
return static::whereIn('position', $positions)
->where('status', true)
->select('id', 'name', 'position')
->with('activeItems:banner_id,title,image,url,description')
->get();
}
}