好的,我没有想法,已经达到了我研究的终点。
有一个注册表单,下面是生日选择字段示例:
<div class="row">
<div class="col-xs-2">
{!! Form::selectMonth('dob_month', 1, ['class'=> 'form-control']) !!}
</div>
<div class="col-xs-2">
{!! Form::selectRange('dob_date', 1, 31, 1, ['class'=> 'form-control']) !!}
</div>
<div class="col-xs-2">
{!! Form::selectYear('dob_year', 1930, 1997, 1991, ['class'=> 'form-control']) !!}
</div>
</div>
当然是laravel的刀片模板。
正如你可以看到它的3个单独的选择形式与dob_month,dob_date和dob_year以及现在值到用户模型中的mutator上
private function setDobAttribute($dob){
$dobString = ['dob_year', 'dob_month', 'dob_date'];
$this->attributes['dob'] = implode('-', array_values($dobString));
}
以dob
作为sql列名。
问题
我希望使用dob_year
捕获dob_month
,dob_date
,implode('-'array_values($dobString))
,其结构为1997-12-01,然后将其保存到数据库中。
当我完成注册新用户的过程时,我收到一条错误消息:Undefined index:dob。
现在我也感觉到在mutator函数setDobAttribute($dob)
中我错过了函数代码中的某些东西,但似乎无法指出它是什么。
输入?建议?
提前谢谢。
答案 0 :(得分:1)
使用array_map
可能是......
private function setDobAttribute($dob){
$keys = ['dob_year', 'dob_month', 'dob_date'];
$this->attributes['dob'] =
implode('-', array_map(function($key) use($dob){
return $dob[$key];
}, $keys));
return $this;
}
答案 1 :(得分:0)
private function setDobAttribute(){
$array = array('dob_year', 'dob_month', 'dob_date');
return $this->attributes['dob'] = implode(-', $array);
}