Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro must be of type

Olá Alura e comunidade,

estou com erro nos tipos da Entidade:

App\Entity\Employee::setDecimoTerceiro(): 
Argument #1 ($decimoterceiro) must be of type ?App\Entity\Ativoemp, string given, called in C:\xampp\htdocs\contb\cotab\src\Controller\PagueController.php on line 70
ExceptionLogs 2Stack Trace TypeError in C:\xampp\htdocs\contb\cotab\src\Entity\Employee.php (line 189)

    public function getDecimoTerceiro(): 
    ?string   
    {     
    return $this->decimoterceiro;  
    }    
    public function setDecimoTerceiro
    (
    ?Ativoemp $decimoterceiro): void    
    {   
    $this->decimoterceiro = $decimoterceiro;    
    if ($decimoterceiro !==null && $decimoterceiro->    
    getATDecimoterceiro() !== $this)
    {      
    $decimoterceiro->setATDecimoterceiro($this);
    

o link do git: git@github.com:tiagobrandao03/cotab.git

1 resposta
solução!

olá! erro tá dizendo que o método setDecimoTerceiro() espera um objeto da classe Ativoemp (ou null), mas você está passando uma string.

isso acontece porque na sua entidade Employee você declarou:

public function setDecimoTerceiro(?Ativoemp $decimoterceiro): void

ou seja, só aceita um objeto Ativoemp ou null.

mas provavelmente no seu controller (PagueController.php, linha 70), você fez algo como:

$employee->setDecimoTerceiro('alguma string');

como resolver:

você tem duas opções:

opção 1: se decimoterceiro é uma string mesmo (você quer guardar algo como "sim"/"não", "13º pago" etc)

então corrija o tipo do método para aceitar string:

public function getDecimoTerceiro(): ?string
{
    return $this->decimoterceiro;
}

public function setDecimoTerceiro(?string $decimoterceiro): void
{
    $this->decimoterceiro = $decimoterceiro;
}

opção 2: se decimoterceiro é uma relação com outra entidade (Ativoemp)

então você precisa passar um objeto do tipo Ativoemp:

$ativoemp = $ativoempRepository->find($id); // busca no banco
$employee->setDecimoTerceiro($ativoemp);