不将引导日期值保存到 Laravel 中的数据库表

Posted

技术标签:

【中文标题】不将引导日期值保存到 Laravel 中的数据库表【英文标题】:not save bootstrap date value to tha DB table in Laravel 【发布时间】:2017-12-15 14:17:47 【问题描述】:

我在表单中使用引导日期选择器将日期值保存在控制器中

public function store(Request $request)

    $task = new Task;
    $task->task_name   = $request->input('name');
    $task->body = $request->input('body');
    $task->assign          = $request->input('status');
    $task->priority        = $request->input('status');
    $task->duedate  = $request->input('date');
    $task->save();

这是表单日期选择器

<div class="col-xs-3">
    <div class="input-group">
        <div class="input-group-addon">
            <i class="fa fa-calendar">
            </i>
        </div>
        <input class="form-control" id="date" name="date" placeholder="MM/DD/YYYY" type="text"/>
    </div>
</div>

这是关于 app.blade.php 中的引导日期选择器的 jQuery 函数

<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<!-- Bootstrap Date-Picker Plugin -->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/js/bootstrap-datepicker.min.js"></script>
<script>
$(document).ready(function()
  var date_input=$('input[name="date"]'); //our date input has the name "date"
  var container=$('.bootstrap-iso form').length>0 ? $('.bootstrap-iso form').parent() : "body";
  var options=
    format: 'mm/dd/yyyy',
    container: container,
    todayHighlight: true,
    autoclose: true,
  ;
  date_input.datepicker(options);
)
</script>

在我的表到期日期列中保存其他没有日期值的表单日期,并使用 0000-00-00 值保存。我该如何解决这个问题?

【问题讨论】:

您好,欢迎来到 ***。请花一些时间阅读帮助页面,尤其是名为"What topics can I ask about here?" 和"What types of questions should I avoid asking?" 的部分。更重要的是,请阅读the Stack Overflow question checklist。您可能还想了解Minimal, Complete, and Verifiable Examples。 【参考方案1】:

这不起作用,因为您已经像这样设置了日期格式format: 'mm/dd/yyyy',,并且mysql日期数据类型只接受Y-m-d格式,因此您可以更改日期时间选择器中的日期格式或使用Carbondate("Y-m-d", strtotime($request-&gt;input("date")))函数更改

【讨论】:

做了但结果相同 使用dd() 检查输出并检查该日期列的数据类型 数据类型是日期日期列中的日期 你试过这个echo $request-&gt;input('date');吗? 发生了这个错误语法错误,意外'echo' (T_ECHO)【参考方案2】:

看起来你已经把它整理好了,但是因为你已经在使用 laravel,所以只需使用 Carbon 包,它会非常简单。加上 Carbon 解析器非常好,如果你改变了从前端提交数据的方式,你不必担心更新你的代码库

use Carbon\Carbon;

public function store(Request $request)

...
$task->duedate  = (new Carbon($request->input('date')))->toDateString();
...

【讨论】:

以上是关于不将引导日期值保存到 Laravel 中的数据库表的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 将其他列值保存到数据透视表

保存多个输入 Laravel 5.6

如何在javascript中获取django表单值而不将其保存到模型中

jQuery DataTable中的引导日期选择器在Laravel应用程序中不起作用

Laravel 5.4 和数据表 - Ajax - 保存/发布数据 - 服务器端

只有 JSON 中的第一个值保存到数据库 - Laravel