从php格式

时间:2015-07-22 16:33:21

标签: php sql laravel mutators

好的,我没有想法,已经达到了我研究的终点。

有一个注册表单,下面是生日选择字段示例:

<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_monthdob_dateimplode('-'array_values($dobString)),其结构为1997-12-01,然后将其保存到数据库中。

当我完成注册新用户的过程时,我收到一条错误消息:Undefined index:dob。

现在我也感觉到在mutator函数setDobAttribute($dob)中我错过了函数代码中的某些东西,但似乎无法指出它是什么。

输入?建议?

提前谢谢。

2 个答案:

答案 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);
}