2016-12-21 3 views
1

Я работаю над Laravel 5.2, и у меня есть форма, представленная в Ajax для вставки данных в таблицу. Это моя функция в контроллере:

public function saveChange(Request $request) { 
      if($request->ajax()) { 
        Affectationabc::create($request->all()); 
        return response()->json([ 
          'testdata' => $request->all() 
        ]); 
      } 
    } 

И я хочу, чтобы добавить в то же время в первый день текущего года и в последний день в 2-х других колоннах.

Я пытался сделать что-то вроде этого:

public function saveChange(Request $request) { 
      if($request->ajax()) { 
        $firstDay = date('l',strtotime(date('Y-01-01'))); 
        $lastDay = date('l',strtotime(date('Y-12-31'))); 
        $request->merge(array('HISTO_AFFECT_DATE_DEB' => $firstDay, 'HISTO_AFFECT_DATE_FIN' => $lastDay)); 
        Affectationabc::create($request->all()); 
        return response()->json([ 
          'testdata' => $request->all() 
        ]); 
      } 
    } 

Но это не работает, вероятно, из-за формата даты. Мои столбцы HISTO_AFFECT_DATE_DEB и HISTO_AFFECT_DATE_FIN - это даты в формате Y-m-d.

Как я могу это сделать, пожалуйста?

EDIT:

Может быть, есть проблема в моей модели, это мой код:

use Illuminate\Database\Eloquent\Model; 

class Affectationabc extends Model 
{ 
protected $table = "Histo_AFFECT_ABC"; 
protected $primaryKey = 'HISTO_AFFECT_ID'; 

const CREATED_AT = 'HISTO_AFFECT_DATE_CREA'; 
const UPDATED_AT = 'HISTO_AFFECT_DATE_MAJ'; 

protected $dates = ['HISTO_AFFECT_DATE_CREA','HISTO_AFFECT_DATE_MAJ','HISTO_AFFECT_DATE_DEB','HISTO_AFFECT_DATE_FIN']; 

protected function getDateFormat() 
{ 
    return 'Y-m-d'; 
} 


protected $fillable = [ 
    'HISTO_AFFECT_ID_CATEG', 
    'HISTO_AFFECT_ID_PERSONNEL', 
    'HISTO_AFFECT_DATE_DEB', 
    'HISTO_AFFECT_DATE_FIN', 
    'HISTO_AFFECT_COMMENTAIRES', 
    'HISTO_AFFECT_DATE_CREA', 
    'HISTO_AFFECT_DATE_MAJ' 
]; 


public function setHistoAffectDateDebAttribute($value) 
{ 
    $this->attributes['HISTO_AFFECT_DATE_DEB'] = \Carbon\Carbon::createFromFormat('d/m/Y', $value)->format('Y-m-d') ; 
} 

public function setHistoAffectDateFinAttribute($value) 
{ 
    $this->attributes['HISTO_AFFECT_DATE_FIN'] = \Carbon\Carbon::createFromFormat('d/m/Y', $value)->format('Y-m-d') ; 
} 
} 

EDIT2: Кажется, у меня есть ошибка 500, когда я пытаюсь добавить это даты!

+0

$ firstDay = дата ('Y-01-01'); и $ lastDay = date ('Y-12-31'); должен работать –

ответ

1

Вы ничего о том, что ошибка вы получаете не сказать, но если это дата, связанные, попробуйте использовать Carbon:

$firstDay = Carbon::now()->startOfYear()->format('Y-m-d'); 
$lastDay = Carbon::now()->endOfYear()->format('Y-m-d'); 
+0

Да, извините, но я ничего не вижу, я просто вижу, что запрос выполнен неправильно, потому что нет нового enbtry ... – K4tn1x

+0

Я проверяю немного больше, у меня есть ошибка 500! – K4tn1x

+0

Вы можете проверить последнее сообщение об ошибке в 'storage \ logs \ laravel.log'. Вы пытались использовать код из моего ответа? –

0

Я имел это 2 функции в моей модели, которые создали конфликты:

public function setHistoAffectDateDebAttribute($value) 
{ 
$this->attributes['HISTO_AFFECT_DATE_DEB'] = \Carbon\Carbon::createFromFormat('d/m/Y', $value)->format('Y-m-d') ; 
} 

public function setHistoAffectDateFinAttribute($value) 
{ 
$this->attributes['HISTO_AFFECT_DATE_FIN'] = \Carbon\Carbon::createFromFormat('d/m/Y', $value)->format('Y-m-d') ; 
} 

Я удалил их, и я сделал это в моем контроллере:

public function saveChange(Request $request) { 
      if($request->ajax()) { 
        $firstDay = Carbon::now()->startOfYear()->format('Y-m-d'); 
        $lastDay = Carbon::now()->endOfYear()->format('Y-m-d'); 
        $request->merge(array('HISTO_AFFECT_DATE_DEB' => $firstDay, 'HISTO_AFFECT_DATE_FIN' => $lastDay)); 
        Affectationabc::create($request->all()); 
        return response()->json([ 
          'testdata' => dd($request->all()) 
        ]); 
      } 
    } 

И все работает отлично! Я нашел ошибку в журналах, спасибо всем!

Смежные вопросы