Я класс называется SubjectData:Laravel один-ко-многим сохранить Углеродные ошибки
class SubjectData extends Model
{
protected $table = 'subject_datas';
protected $fillable = ['firstname','lastname','birthdate','birthcity','months'];
protected $dates = ['birthdate'];
public function setBirthdateAttribute($date)
{
// So we can add the time, not just he php date
$this->attributes['birthdate'] = Carbon::createFromFormat('d/m/Y', $date);
}
public function anamnesis() {
return $this->belongsTo('App\Anamnesis');
}
}
И у меня есть класс с именем Анамнез:
class Anamnesis extends Model
{
public function meetingTest() {
return $this->belongsTo('App\MeetingTest');
}
public function subject() {
return $this->belongsTo('App\Subject','subject_id','id');
}
public function subjectData() {
return $this->hasOne('App\SubjectData');
}
public function scholarHistory() {
return $this->hasOne('App\ScholarHistory');
}
public function familyHistory() {
return $this->hasOne('App\FamilyHistory');
}
public function psicodiagnosis() {
return $this->hasOne('App\Psicodiagnosis');
}
}
Магазин функция класса SubjectController работает как это:
public function store(CreateSubjectRequest $request)
{
$input = $request->all();
// Let's generate the anamnesis of the subject
$anamnesis = Anamnesis::create();
$anamnesis->save();
$newSubjectData = $this->saveSubjectData($input);
$anamnesis->subjectData()->save($newSubjectData);
......
......
}
где функция называется это:
public function saveSubjectData($input)
{
$subjectData['firstname'] = $input['firstname'];
$subjectData['lastname'] = $input['lastname'];
$subjectData['birthcity'] = $input['birthcity'];
$subjectData['birthdate'] = $input['birthdate'];
return SubjectData::create($subjectData);
}
Проблема заключается в свойстве «birthdate».
Если я проверяю значение $ newSubjectData (dd ($ newSubjectdata)) после вызова $ this-> saveSubjectData ($ input) значение даты рождения точно совпадает с тем, которое я установил в календаре на фронте (и также в db значение верно)
Если я поместил dd ($ anamnesis-> subjectData) после вызова $ anamnesis-> subjectData() -> save ($ newSubjectData), результатом будет дата «сегодня» а также в БД значение не та, которую я установил, а дата сегодняшнего дня.
Не удается найти ошибку
P.S. Календарь находится внутри шаблона Vue
Дело в том, что до тех пор, пока я не получу команду $ anamnesis-> subjectData() -> save ($ newSubjectData), дата будет правильно сохранена в БД. Это связано с тем, что я установил свойство типа типа $ date внутри модели. Даже без команды Carbon \ Carbon: formatFrom ... это работает. Только когда я пытаюсь подключить его к анамнезу, кажется, сбросить дату. –
Я вижу. Попробуйте использовать istead для использования 'save()': '$ anamnesis-> subjectData() -> attach ($ newSubjectData);' –
Вызов неопределенного метода Illuminate \ Database \ Query \ Builder :: attach() –