44 lines
1.2 KiB
PHP
44 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
|
|
|
|
class Room extends Model
|
|
{
|
|
use HasFactory;
|
|
protected $guarded = [];
|
|
//TODO can a user add rooms?
|
|
|
|
public function auditions(): HasMany
|
|
{
|
|
return $this->hasMany(Audition::class)->orderBy('order_in_room');
|
|
}
|
|
|
|
public function entries(): HasManyThrough
|
|
{
|
|
return $this->hasManyThrough(
|
|
Entry::class,
|
|
Audition::class,
|
|
'room_id', // Foreign key on the auditions table
|
|
'audition_id', //Foreign key on the Entries table
|
|
'id', // Local key on the rooms table
|
|
'id' // Local key on the Auditions table
|
|
);
|
|
}
|
|
|
|
public function users(): BelongsToMany
|
|
{
|
|
return $this->belongsToMany(User::class,'room_user');
|
|
}
|
|
|
|
public function judges(): BelongsToMany
|
|
{
|
|
return $this->belongsToMany(User::class,'room_user','room_id','user_id');
|
|
}
|
|
}
|