Files
eatvio-infra/app/Models/Diary.php
2024-01-15 01:05:10 +03:00

86 lines
3.0 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Builder;
/**
* App\Models\Diary
*
* @property int $id
* @property int|null $user_id
* @property string $date
* @property string $wakeup
* @property string $retire
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property int|bool $closed
* @property string $comment
*
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ConsultantDiaryComment> $consultant_comments
* @property-read int|null $consultant_comments_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Meal> $meals
* @property-read int|null $meals_count
* @property-read \App\Models\User|null $user
*
* @method static \Database\Factories\DiaryFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|Diary newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Diary newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Diary query()
* @method static \Illuminate\Database\Eloquent\Builder|Diary userToDayItem($userId)
* @method static \Illuminate\Database\Eloquent\Builder|Diary whereClosed($value)
* @method static \Illuminate\Database\Eloquent\Builder|Diary whereComment($value)
* @method static \Illuminate\Database\Eloquent\Builder|Diary whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Diary whereDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Diary whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Diary whereRetire($value)
* @method static \Illuminate\Database\Eloquent\Builder|Diary whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Diary whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Diary whereWakeup($value)
*
* @mixin \Eloquent
*/
class Diary extends Model
{
use HasFactory;
// protected $casts = ['date' => 'datetime:d-m-Y'];
// protected $dateFormat = 'd-m-Y';
public function user(): BelongsTo
{
return $this->belongsTo(User::class)->withDefault([
'name' => 'Guest Author',
]);
}
public function meals():HasMany
{
return $this->hasMany(Meal::class);
}
public function scopeUserToDayItem(Builder $query, int $userId): Builder
{
return $query
->where('user_id', $userId)
->where('date', now()->format('Y-m-d'));
}
public function consultant_comments(): HasMany
{
return $this->hasMany(ConsultantDiaryComment::class);
}
protected function hasComments(): Attribute
{
return Attribute::make(
get: fn () => $this->consultant_comments()->count() > 0,
);
}
}