2

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

有一个带有出生日期选择字段示例的注册表单如下:

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

当我完成注册新用户的过程时,我收到一条未定义索引的错误消息:dob。

现在我也感觉到,在 mutator 函数中,setDobAttribute($dob)我在该函数代码中遗漏了一些东西,但似乎无法确定它是什么。

输入?建议?

先感谢您。

4

2 回答 2

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;
}
于 2015-07-22T18:18:00.760 回答
0
private function setDobAttribute(){

    $array = array('dob_year', 'dob_month', 'dob_date');
    return $this->attributes['dob'] = implode(-', $array);
}
于 2015-07-22T18:02:31.060 回答