ldc-doux/app/Models/Slider.php

67 lines
1.6 KiB
PHP
Raw Permalink Normal View History

2021-12-06 08:51:51 +01:00
<?php
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
2022-01-22 17:16:00 +01:00
use Spatie\Translatable\HasTranslations;
2021-12-06 08:51:51 +01:00
class Slider extends Model
{
use HasFactory;
2022-01-22 17:16:00 +01:00
use HasTranslations;
2021-12-06 08:51:51 +01:00
2022-08-29 17:23:10 +02:00
/**
* The attributes that are mass assignable.
*
* @var array
*/
2026-10-27 09:12:51 +01:00
#[\Override]
2021-12-07 23:35:14 +01:00
protected $fillable = [
'label',
'slug',
'commentaire',
'published'
];
2022-08-29 17:23:10 +02:00
/**
* The attributes that are translatable.
*
* @var array
*/
2022-01-22 17:16:00 +01:00
public $translatable = [
'label',
'slug',
'commentaire'
];
2022-08-29 17:23:10 +02:00
/**
* HasMany slides relation
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
2021-12-06 08:51:51 +01:00
public function slides()
{
return $this->hasMany(Slide::class, 'slider_id')->orderBy('order', 'ASC');
}
2022-08-29 17:23:10 +02:00
/**
* HasMany showable slides relation
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
2021-12-06 08:51:51 +01:00
public function showableSlides()
{
2026-10-27 09:12:51 +01:00
$now = \Illuminate\Support\Facades\Date::now();
2021-12-06 08:51:51 +01:00
return $this->hasMany(Slide::class, 'slider_id')
2026-10-27 10:50:28 +01:00
->orderBy('order', 'ASC')->where(function (\Illuminate\Contracts\Database\Query\Builder $q) use ($now): void {
2021-12-06 08:51:51 +01:00
$q->whereDate('date_start', '<=', $now)
->orWhereNull('date_start');
2026-10-27 10:50:28 +01:00
})->where(function (\Illuminate\Contracts\Database\Query\Builder $q) use ($now): void {
2021-12-06 08:51:51 +01:00
$q->whereDate('date_end', '>=', $now)
->orWhereNull('date_end');
});
}
}