Oi Leandro, poderia explicar melhor sua dúvida? Ainda não vi o problema de mapear o banco com sua classe de domínio.
Escrevi um exemplo rápido aqui só a título de demonstração (demanda mt código para algo completo e com melhores práticas), se eu tiver entendido errado sua dúvida vc me fala.
// modelo de dominio simplificado
interface EstadoOrcamento
{
}
interface RepositorioDeOrcamento
{
public function salva(Orcamento $orcamento);
}
class Orcamento
{
private float $valor;
private EstadoOrcamento $estado;
public function __construct(float $valor, EstadoOrcamento $estado)
{
$this->valor = $valor;
$this->estado = $estado;
}
public function valor(): float
{
return $this->valor;
}
public function estadoOrcamento(): EstadoOrcamento
{
return $this->estado;
}
}
class EmAprovacao implements EstadoOrcamento
{
}
class Aprovado implements EstadoOrcamento
{
}
// camada de persistencia simplificada
class RepositorioDeOrcamentoComPDO implements RepositorioDeOrcamento
{
public function salva(Orcamento $orcamento)
{
$estado = $this->mapeiaEstadoOrcamento($orcamento);
$query = "INSERT INTO orcamento VALUES ({$orcamento->valor()}, {$estado})";
//restante do código para persistir o orcamento após a query montada...
}
private function mapeiaEstadoOrcamento($orcamento): int
{
$estado = get_class($orcamento->estadoOrcamento());
switch($estado) {
case 'EmAprovacao' :
return 1;
break;
case 'Aprovado' :
return 2;
break;
}
}
}