File: /var/www/matriculas_api_dev/app/Models/Postulation.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Postulation extends Model
{
use HasFactory;
protected $table = 'postulations';
protected $fillable = [
'code_postulation',
// 🔹 Estudiante
'student_first_name',
'student_second_name',
'student_last_name',
'student_second_last_name',
'student_rut',
'student_email',
'student_mobile',
'student_birthdate',
'student_gender_id',
'student_country_id',
'student_region_id',
'student_commune_id',
'student_address',
// 🔹 Apoderado
'parent_relationship_id',
'parent_first_name',
'parent_second_name',
'parent_last_name',
'parent_second_last_name',
'parent_rut',
'parent_email',
'parent_mobile',
'parent_gender_id',
'parent_profession',
'parent_country_id',
'parent_region_id',
'parent_commune_id',
'parent_address',
// 🔹 Información académica
'course_id',
'previous_school',
'siblings',
'special_needs',
'date_entry',
// 🔹 Estado / control
'status_postulation_id',
'period_id',
'status',
'deleted',
// 🔹 Auditoría
'user_created',
'user_updated',
];
protected $hidden = [
'deleted',
];
// =======================================================
// 🔹 Relaciones del Estudiante
// =======================================================
public function studentGender()
{
return $this->belongsTo(Gender::class, 'student_gender_id');
}
public function studentCountry()
{
return $this->belongsTo(Country::class, 'student_country_id');
}
public function studentRegion()
{
return $this->belongsTo(Region::class, 'student_region_id');
}
public function studentCommune()
{
return $this->belongsTo(Commune::class, 'student_commune_id');
}
// =======================================================
// 🔹 Relaciones del Apoderado
// =======================================================
public function parentRelationship()
{
return $this->belongsTo(Relationship::class, 'parent_relationship_id');
}
public function parentGender()
{
return $this->belongsTo(Gender::class, 'parent_gender_id');
}
public function parentCountry()
{
return $this->belongsTo(Country::class, 'parent_country_id');
}
public function parentRegion()
{
return $this->belongsTo(Region::class, 'parent_region_id');
}
public function parentCommune()
{
return $this->belongsTo(Commune::class, 'parent_commune_id');
}
// =======================================================
// 🔹 Relaciones académicas y de estado
// =======================================================
public function course()
{
return $this->belongsTo(Course::class, 'course_id');
}
public function period()
{
return $this->belongsTo(Period::class, 'period_id');
}
public function statusPostulation()
{
return $this->belongsTo(StatusPostulation::class, 'status_postulation_id');
}
// =======================================================
// 🔹 Auditoría
// =======================================================
public function createdBy()
{
return $this->belongsTo(User::class, 'user_created');
}
public function updatedBy()
{
return $this->belongsTo(User::class, 'user_updated');
}
}