我有一个名为SubjectData的课程:
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');
}
}
我有一个名为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类的store函数的工作方式如下:
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"属性。
如果我在调用$ this-> saveSubjectData($ input)后检查$ newSubjectData(dd($ newSubjectdata))的值,则生日的值正好是我在前端的日历上设置的值(和也在db中,值是正确的)
如果我在调用$ anamnesis-> subjectData() - > save($ newSubjectData)之后输入dd($ anamnesis-> subjectData),结果就是"今天"日期以及数据库中的值不是我设置的值,而是今天的日期。
我无法找到错误
P.S。日历位于Vue模板
中答案 0 :(得分:0)
我认为问题在于,日期必须是Carbon的实例,或者根据您的数据库表格格式化。在saveSubjectData()方法中尝试以下内容
$subjectData['birthdate'] = Carbon\Carbon::parse($input['birthdate']
答案 1 :(得分:0)
我写下答案,但我感谢约翰奥尔德林引导我朝着正确的方向前进。
您必须在迁移表的默认时间戳之后放置时间戳(' birthdate')(所以在迁移表的末尾)
我不知道为什么。如果有人知道请解释!