Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Formatar números reais

Boa tarde, queria saber como utilizar essa função no query builder

$table->decimal('amount', 5, 2);

desse site https://laravel.com/docs/5.0/schema Estou tentando formatar o resultado dessa query builder que fiz no laravel.

$area = DB::table('trabalho')
                ->select('trabalho.id','trabalho.cod','trabalho.titulo','instituicao.nome',(DB::raw('sum(quesito.peso * nota.valor)/count(distinct avaliacao.avaliador_id) as total')))
                ->join('avaliacao','trabalho.id','=','avaliacao.trabalho_id')
                ->join('avaliador','avaliacao.avaliador_id','=','avaliador.id')
                ->join('instituicao','avaliador.instituicao_id','=','instituicao.id')
                ->join('nota','avaliacao.id','=','nota.avaliacao_id')
                ->join('quesito','quesito.id','=','nota.quesito_id')
                ->where('trabalho.area_id','=', $area['id'])
                ->where('trabalho.categoria_id','=',1)
                ->groupBy('trabalho.id', 'trabalho.cod','trabalho.titulo','instituicao.nome')
                ->orderBy('total','desc')->get();

tentar usar no total.

4 respostas

Oi Yuri, tudo bem? Acredito que não dê pra fazer por que o Schema é para criar as tabelas no banco e sinceramente eu acho que poderia ser uma coisa bem estranha poder fazer isso dessa forma. Contudo, se estiver utilizando a versão mais recente do Laravel, você pode usar os mutators, que basicamente formatam o valor automaticamente depois de serem retornados do banco.

https://laravel.com/docs/5.3/eloquent-mutators

Acho que essa feature presente na nova versão indica que de alguma forma, não era possível na versão que você apresenta a documentação, e se fosse possível, talvez não seja através das proprias features do framework.

Dá uma olhada nos mutators? São bem simples!

Boa tarde, Yuri!

Posso ter entendido errado, mas essa função decimal do objeto $table é usada para contruir tabelas. Ou seja, você à utiliza em uma migration para dizer para o Laravel que quando você executar o migrate que você quer criar um campo chamado amount com 5 digitos e 2 casas.

Como o Wanderson disse, se sua versão for da 5.1 pra cima dá uma olhada nos mutators que foram feitos para isso, caso sua versão for 5.0 para baixo, até onde eu sei é necessário formatar na mão em todo retorno que você utilizar essa query.

TL;DR essa função não é utilizada para formatação de dados, e sim para criação de campos nas migrations. Se sua versão for maior ou igual à 5.1, use mutators, se não, tem que formatar na mão.

Abraço!

Yuri você pode usar o Selectraw, ele deixa você usar funções de SQL como concat, count e etc, porem na doc do laravel eles não mostram esse metodo porem segue o link dele na api

https://laravel.com/api/5.0/Illuminate/Database/Query/Builder.html#method_selectRaw

solução!

Utilizei number_format do php mesmo minha versão do laravel é 5.0