3
I set the date format for viewing to "d-m-Y", while the recording format is from the "Y-m-d" bank".
However at the time of recording in the database, something happens and the data is going in the "m-d-Y" format, and with this the data will be truncated, especially if the day is bigger than 12, then the date goes to 31-12-1969 automatically and it is this date that is recorded in the database.
Laravel 4.1 is installed, and the database is Mysql.
Here are the codes:
controller
public function getEdit($id) {
$despesa = Despesas::find($id);
$despesa->valor = str_replace('.', ',', $despesa->valor);
$despesasOrigem = array('' => 'Selecione...') + DespesasOrigem::lists('descricao', 'id');
$despesasTipos = array('' => 'Selecione...') + DespesasTipo::lists('descricao', 'id');
return View::make('despesas.despesasEdit')
->with('despesa', $despesa)
->with('despesas_tipo_id', $despesasTipos)
->with('despesas_origem_id', $despesasOrigem);
}
public function postEdit() {
$dados = Input::all();
$dados['data'] = date('Y/m/d', strtotime($dados['data']));
$dados['users_id'] = Auth::User()->id;
$valida = Validator::make($dados, Despesas::$rules);
if ($valida->fails()) {
return Redirect::to('despesas/edit' . Input::get('id') )->withInput()->withErrors($valida);
} else {
$despesa = Despesas::find(Input::get('id'));
$despesa->descricao = $dados['descricao'] ;
$despesa->data = $dados['data'] ;
$despesa->valor = $str_replace(',', '.', $dados['valor']);
$despesa->users_id = $dados['users_id'] ;
$despesa->despesas_tipo_id = $dados['despesas_tipo_id'] ;
$despesa->despesas_origem_id = $dados['despesas_origem_id'] ;
$despesa->save();
$despesa = Despesas::find($despesa->id);
$despesasOrigem = array('' => 'Selecione...') + DespesasOrigem::lists('descricao', 'id');
$despesasTipos = array('' => 'Selecione...') + DespesasTipo::lists('descricao', 'id');
return View::make('despesas.despesasEdit')
->with('despesa', $despesa)
->with('despesas_tipo_id', $despesasTipos)
->with('despesas_origem_id', $despesasOrigem)
->with('sucesso', 'Despesa atualizada com sucesso!');
}
}
view
@extends('templates.master')
@section('conteudo')
<h2>Editar Despesa</h2>
@if(isset($sucesso))
{{ Alert::success($sucesso) }}
@endif
{{ Form::open() }}
{{ Form::hidden('id', $despesa->id) }}
{{ Form::label('Descrição') }}
{{ Form::input('text', 'descricao', $despesa->descricao) }}
@if($errors->first('descricao') != null)
{{ Alert::warning($errors->first('descricao', 'O campo descrição é obrigatorio.'))}}
@endif
{{ Form::label('Valor') }}
{{ Form::input('text', 'valor', $despesa->valor) }}
@if($errors->first('valor') != null)
{{ Alert::warning($errors->first('valor', 'O campo valor é obrigatório'))}}
@endif
{{ Form::label('Data da despesa') }}
{{ Form::input('text', 'data', date('d/m/Y', strtotime($despesa->data))) }}
@if($errors->first('data') != null)
{{ Alert::warning($errors->first('data', 'O campo data é obrigatório'))}}
@endif
{{ Form::label('despesas_tipo_id', 'Tipo:') }}
{{ Form::select('despesas_tipo_id', $despesas_tipo_id, $despesa->despesas_tipo_id) }}
@if($errors->first('despesas_tipo_id') != null)
{{ Alert::warning($errors->first('despesas_tipo_id', 'O campo Tipo de Despesa é obrigatório'))}}
@endif
{{ Form::label('despesas_origem_id', 'Origem:') }}
{{ Form::select('despesas_origem_id', $despesas_origem_id, $despesa->despesas_origem_id) }}
@if($errors->first('despesas_origem_id') != null)
{{ Alert::warning($errors->first('despesas_origem_id', 'O campo Origem da Despesa é obrigatório'))}}
@endif
{{ Form::submit('Enviar')}}
{{ Form::close() }}
@stop
route
Route::controller('despesas', 'DespesasController');
models
<?php
class Despesas extends Eloquent {
protected $table = "despesas";
protected $softDelete = true;
/**
* Regras de validação da table despesas
*
* @return array
*/
public static $rules = array (
'descricao' => 'required',
'valor' => 'required|numeric',
'data' => 'required|date',
'despesas_tipo_id' => 'required',
'despesas_origem_id' => 'required',
'users_id' => 'required'
);
protected $guarded = array('id');
public function despesasTipo()
{
return $this->belongsTo('DespesasTipo','despesas_tipo_id');
}
public function despesasOrigem()
{
return $this->belongsTo('DespesasOrigem','despesas_origem_id');
}
public function user()
{
return $this->belongsTo('User','users_id');
}
}
Thanks, it worked well on my controller like this:
$dados['data'] = DateTime::createFromFormat('d/m/Y', $dados['data']);

 $dados['data'] = $dados['data']->format('Y/m/d');
– Cavalcante
@By all means! That syntax works with the latest versions of PHP. In your case the helper
with()
of Laravel helps simplify:$dados['data'] = with(DateTime::createFromFormat('d/m/Y', $dados['data']))->format('Y-m-d');
:)– Paulo Freitas