forked from eatvio/eatvio-infra
86 lines
3.0 KiB
PHP
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,
|
|
);
|
|
}
|
|
}
|