Replacing "," with "." by Laravel's Mutator Returns empty and not saved to the bank.
ProductsController
namespace App\Http\Controllers;
use Prettus\Validator\Contracts\ValidatorInterface;
use Prettus\Validator\Exceptions\ValidatorException;
use App\Http\Requests\ProdutoCreateRequest;
use App\Http\Requests\ProdutoUpdateRequest;
use App\Repositories\ProdutoRepository;
use App\Validators\ProdutoValidator;
use App\Services\ProdutoService;
class ProdutosController extends Controller
{
protected $repository;
protected $service;
public function __construct(ProdutoRepository $repository, ProdutoService $service)
{
$this->repository = $repository;
$this->service = $service;
}
public function store(ProdutoCreateRequest $request)
{
$request = $this->service->store($request->all());
$produto = $request['success'] ? $request['data'] : null ;
session()->flash('success', [
'success' => $request['success'],
'messages' => $request['messages'],
]);
return redirect()->route('admin.produtos.create');
}
}
ProductService
namespace App\Services;
use App\Repositories\ProdutoRepository;
use App\Validators\ProdutoValidator;
use Illuminate\Routing\Matching\ValidatorInterface;
use Exception;
class ProdutoService
{
private $repository;
private $validator;
public function __construct(ProdutoRepository $repository, ProdutoValidator $validator)
{
$this->repository = $repository;
$this->validator = $validator;
}
public function store($data)
{
try
{
$produto = $this->repository->create($data);
return [
'success' => true,
'messages' => 'Produto cadastrado com Sucesso',
'data' => $produto,
];
}
catch(Exception $e)
{
dd($e);
return [
'success' => false,
'messages' => 'Erro de execução',
];
}
}
}
Product Model
namespace App\Entities;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Prettus\Repository\Contracts\Transformable;
use Prettus\Repository\Traits\TransformableTrait;
class Produto extends Model implements Transformable
{
use TransformableTrait;
use SoftDeletes;
public $timestamps = true;
protected $table = 'produtos';
protected $fillable = [
'titulo', 'status', 'console', 'genero', 'classificacao', 'custo', 'venda', 'desconto',
'indatepromo', 'outdatepromo', 'quantidade', 'descricao', 'produtora', 'lancamento',
'idioma', 'legenda', 'onplayers', 'offplayers', 'obs1', 'obs2', 'obs3', 'video',
];
protected $hidden = ['status', 'custo'];
/// CUSTO TROCA VIRGULA POR PONTO
public function setCustoAttribute($value)
{
$this->attributes['custo'] = str_replace(",", ".", $value);
}
public function getCustoAttribute($value)
{
$this->attributes['custo'] = str_replace(".", ",", $value);
}
/// VENDA TROCA VIRGULA POR PONTO
public function setVendaAttribute($value)
{
$this->attributes['venda'] = str_replace(",", ".", $value);
}
public function getVendaAttribute($value)
{
$this->attributes['venda'] = str_replace(".", ",", $value);
}
/// PROMOÇÃO TROCA VIRGULA POR PONTO
public function setDescontoAttribute($value)
{
$this->attributes['desconto'] = str_replace(",", ".", $value);
}
public function getDescontoAttribute($value)
{
$this->attributes['desconto'] = str_replace(".", ",", $value);
}
}
ProductRepository
namespace App\Repositories;
use Prettus\Repository\Contracts\RepositoryInterface;
/**
* Interface ProdutoRepository.
*
* @package namespace App\Repositories;
*/
interface ProdutoRepository extends RepositoryInterface
{
//
}