'string', 'description' => 'string' ]; /** * Validation rules * * @var array */ public static $rules = [ 'type_id' => 'required', 'client_id' => 'required', 'reference' => 'required', 'status' => 'required' ]; /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo **/ public function projectType(): BelongsTo { return $this->BelongsTo(ModularType::class, 'type_id', 'id')->withTrashed(); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo **/ public function client(): BelongsTo { return $this->BelongsTo(Client::class, 'client_id', 'id')->withTrashed(); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo **/ public function currentStatus(): BelongsTo { return $this->BelongsTo(ModularType::class, 'status', 'id')->withTrashed(); } public function milestones(): hasMany { return $this->hasMany(ProjectMilestone::class, 'project_id', 'id'); } public function tasks(): hasManyThrough { return $this->hasManyThrough(Task::class, ProjectMilestone::class, 'project_id', 'milestone_id'); } protected static function boot() { parent::boot(); static::deleting(function($project) { foreach($project->milestones as $milestone){ $milestone->delete(); } }); } }