80 lines
2.0 KiB
PHP
80 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
|
|
|
class Jugador extends Model
|
|
{
|
|
use SoftDeletes;
|
|
protected $table = 'jugadores';
|
|
protected $primaryKey = 'id_jugador';
|
|
public $timestamps = true;
|
|
public $incrementing = false;
|
|
|
|
protected $fillable = [
|
|
'id_jugador',
|
|
'documento',
|
|
'nombre',
|
|
'apellido',
|
|
'fecha_nacimiento',
|
|
'edad',
|
|
'categoria',
|
|
'id_club_actual',
|
|
'id_club_origen',
|
|
'activo',
|
|
'email',
|
|
'telefono',
|
|
'password',
|
|
'reset_token',
|
|
'reset_expira',
|
|
];
|
|
|
|
protected $hidden = [
|
|
'password',
|
|
'reset_token',
|
|
];
|
|
|
|
protected $casts = [
|
|
'id_jugador' => 'string',
|
|
'fecha_nacimiento' => 'date',
|
|
'edad' => 'integer',
|
|
'id_club_actual' => 'integer',
|
|
'id_club_origen' => 'integer',
|
|
'activo' => 'boolean',
|
|
'reset_expira' => 'datetime',
|
|
];
|
|
|
|
public function getCategoriaCalculadaAttribute()
|
|
{
|
|
if (!$this->fecha_nacimiento) return 'Sin categoría';
|
|
|
|
// Calculate age for the current year. (Categoría U15 is for players turning 14 and 15 in the current year).
|
|
// That means current_year - birth_year
|
|
$edadCategoria = date('Y') - $this->fecha_nacimiento->format('Y');
|
|
|
|
$categoria = Categoria::where('edad_min', '<=', $edadCategoria)
|
|
->where('edad_max', '>=', $edadCategoria)
|
|
->first();
|
|
|
|
return $categoria ? $categoria->nombre : 'Sin categoría';
|
|
}
|
|
|
|
public function clubActual()
|
|
{
|
|
return $this->belongsTo(Club::class, 'id_club_actual', 'id_club');
|
|
}
|
|
|
|
public function clubOrigen()
|
|
{
|
|
return $this->belongsTo(Club::class, 'id_club_origen', 'id_club');
|
|
}
|
|
|
|
public function equipos()
|
|
{
|
|
return $this->belongsToMany(Equipo::class, 'jugador_equipo', 'id_jugador', 'id_equipo')
|
|
->withPivot('fecha_alta');
|
|
}
|
|
}
|