【问题标题】:Laravel: How to get DoB?Laravel:如何获得 DoB?
【发布时间】:2017-09-26 23:11:30
【问题描述】:

当给定一个表格,比如一张注册表,并且您要求客人输入他们的生日才能进行注册时,您如何从所有三个输入中获取数据并将其合并为一个,然后再将其放入数据库?

在 Laravel 中,我有一个这样的表单输入:

<select name="birthdayMonth">
  <option value="1">January</option>
</select>
<select name="birthdayDay">
  <option value="1">01</option>
</select>
<select name="birthdayYear">
  <option value="1900">1900</option>
</select>

因此,当我单击提交并且 POST 控制器接收到调用时,这就是我的方法所做的:

  public function processRegister() {
    $user = new User(Input::all());
    $user->password = md5(Input::get('password'));
    $user->save();

    return View::make('user.registerSuccess');
  }

好的,那么,如何将通过 Input::all() 传入的三个输入格式化为一个生日输入?我的数据库中没有“birthdayMonth”、“birthdayDay”和“birthdayYear”表。我只有一个时间戳“生日”。

我是否需要让它在模型中看起来很丑,并防止这三个输入的大量分配,或者是否有更漂亮和看似更好的方法来做到这一点?

如果您需要更多信息,请告诉我,我会尽快提供。

谢谢。

【问题讨论】:

  • 供参考:这是一个测试文件。不, md5() 调用不会在实际互联网上的任何地方进行。 ;)

标签: php laravel laravel-4


【解决方案1】:
$user = new User(Input::all());
$user->password = md5(Input::get('password'));

$birthday = Input::get('birthdayYear')."-".Input::get('birthdayMonth')."-".Input::get('birthdayDay');

$user->birthday = date('Y-m-d H:i:s', strtotime($birthday));
$user->save();

试试这样的:)

【讨论】:

  • 嘿,谢谢,但我要说的是字段birthdayYear、birthdayMonth 和birthdayDay 都已经发送到数据库中,输入::all() 和Laravel 错误。我需要“保护”那些领域吗?我宁愿不这样做,但如果必须这样做,我会的。
  • 您要验证这些字段吗?
  • 不,我只是想把它们扔掉,并确保它们甚至没有显示给模型。我想将它们变成 1 值,然后将其传递给模型。我猜这样做的方法是保护它们,以便模型在传入 Input::all() 时忽略它们,是吗?
  • 您可以使用Input::except('birthdayYear','birthdayMonth','birthdayDay'); 代替Input::all(),这样这些输入就不会插入到您的模型中。
  • @jdersen 抱歉,兄弟没有收到您的评论。你能告诉你到底想要什么吗?
【解决方案2】:

您必须使用日、月和年数据将日期转换为时间戳。见PHP函数mktime();

$input = Input::all();
$input->birthday = mktime(0,0,0, $input['month'], $input['day'], $input['year']); 
$user = new User($input);
$user->save();

【讨论】:

  • 您好,谢谢。我发布了对 Kalhano 答案的回复。该回复也与您的回答有关,因此请查看:)
  • 好的。试试这个:$input = Input::all();$input-&gt;birthday = mktime(0,0,0, $input['month'], $input['day'], $input['year']); $user = new User($input);
  • 嗯,接近,但不完全。不过,MrShibby 有。再次感谢你的帮助! :)
【解决方案3】:

Laravel 用户 出生日期出生日期 ======在你的刀片/user.blade.php中添加这个=======

<input id="dob" type="date" class="form-control" name="dob" value="{{ old('dob') }}" required autofocus>
   @if ($errors->has('dob'))
   <span class="help-block">
   <strong>{{ $errors->first('dob') }}</strong>
   </span>
    @endif

=========然后模型/user.php ======

protected $dates = [
    'dob'
    ];

====== 控制器/UserController.php=====

'dob' => $data['dob'],

希望有帮助

【讨论】:

    猜你喜欢
    • 2018-10-19
    • 1970-01-01
    • 2015-01-14
    • 2019-09-21
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    相关资源
    最近更新 更多