app/backend/app/Models/UserDish.php
2025-10-13 14:58:50 +02:00

56 lines
1.8 KiB
PHP

<?php
namespace App\Models;
use Database\Factories\UserDishFactory;
use DishPlanner\UserDish\Interfaces\FixedRecurrenceInterface;
use DishPlanner\UserDish\Interfaces\RecurrenceInterface;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
/**
* @method static UserDishFactory factory()
* @method static findOrFail(int|null $user_dish_id)
* @method static UserDish|null find(int|null $user_dish_id)
* @method static create(array $array)
* @method static where(string $string, int $id)
* @property int $id
* @property int $dish_id
* @property int $user_id
* @property User|null $user
* @property Dish|null $dish
* @property Collection<RecurrenceInterface> $recurrences
* @property Collection<FixedRecurrenceInterface> $fixedRecurrences
*/
class UserDish extends Model
{
use HasFactory;
protected $fillable = ['user_id', 'dish_id'];
public function recurrences(): HasMany
{
return $this->hasMany(UserDishRecurrence::class, 'user_dish_id');
}
public function fixedRecurrences(): HasMany
{
return $this->hasMany(UserDishRecurrence::class, 'user_dish_id')
->where('recurrence_type', WeeklyRecurrence::class)
->join('weekly_recurrences', 'weekly_recurrences.id', '=', 'user_dish_recurrences.recurrence_id')
->select('weekly_recurrences.*', 'user_dish_recurrences.user_dish_id'); // Ensures we work with weekly_recurrences columns
}
public function user(): BelongsTo
{
return $this->BelongsTo(User::class);
}
public function dish(): BelongsTo
{
return $this->BelongsTo(Dish::class);
}
}