select distinct `temp`.`distribuidor_id`, `temp`.`cnpj`, `temp`.`razaosocial`, `temp`.`mes`, `temp`.`nomeMes`, `temp`.`abreviatura` as `mesAbreviado`, ifnull(distribuidormetas.valor, 0) as meta from `distribuidormetas` right join ( SELECT distribuidores.id as distribuidor_id ,distribuidores.cnpj ,distribuidores.razaosocial ,meses.mes ,meses.nomeMes ,meses.abreviatura ,periodos.id as periodo_id ,periodos.mes as periodo_mes ,periodos.ano FROM distribuidores, meses, periodos ) as temp on `distribuidormetas`.`distribuidor_id` = `temp`.`distribuidor_id` and `distribuidormetas`.`periodo_id` = `temp`.`periodo_id` and `temp`.`mes` = `temp`.`periodo_mes` and `temp`.`ano` = `2019` order by `temp`.`razaosocial` asc, `temp`.`mes` asc
select distinct `temp`.`distribuidor_id`, `temp`.`cnpj`, `temp`.`razaosocial`, `temp`.`mes`, `temp`.`nomeMes`, `temp`.`abreviatura` as `mesAbreviado`, ifnull(distribuidormetas.valor, 0) as meta from `distribuidormetas` right join ( SELECT distribuidores.id as distribuidor_id ,distribuidores.cnpj ,distribuidores.razaosocial ,meses.mes ,meses.nomeMes ,meses.abreviatura ,periodos.id as periodo_id ,periodos.mes as periodo_mes ,periodos.ano FROM distribuidores, meses, periodos ) as temp on `distribuidormetas`.`distribuidor_id` = `temp`.`distribuidor_id` and `distribuidormetas`.`periodo_id` = `temp`.`periodo_id` and `temp`.`mes` = `temp`.`periodo_mes` and `temp`.`ano` = 2019 order by `temp`.`razaosocial` asc, `temp`.`mes`
Have you tried it using DB::raw
->on('temp.ano', DB::raw($ano));