【问题标题】:SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '["1","3","66","68"]' for column 'infraction_id' at row 1SQLSTATE [22007]:无效的日期时间格式:1366 不正确的整数值:第 1 行的列 'infraction_id' 的整数值:'["1","3","66","68"]'
【发布时间】:2018-11-08 07:37:42
【问题描述】:

我正在尝试保存整个数据,但我需要数组,并且出现数据格式错误。

刀片

@foreach($infractions as $infraction)
    <tr>
        <th>{{ $infraction->title }}</th>
        <td>
            <input type="checkbox" name="infraction_id[]" value="{{ $infraction->id }}" data-toggle="toggle" data-on="Yes" data-off="No" data-onstyle="success" data-offstyle="danger" data-score="{{ $infraction->score }}">
        </td>
    </tr>
@endforeach

控制器

public function store(Request $request)
{
    $inspection = new Inspection();
    $inspection->infraction_id = $request->infraction_id;
    $inspection->encouragement_id = 1;
    $inspection->user_id = auth()->user()->id;
    $inspection->requisition_id = $request->input('requisition_id');
    $inspection->save();
    $inspection->requisitions()->update(['status' => 1]);
    return redirect()->route('inspection-results.index');
}

我看到了这个错误

SQLSTATE[22007]:无效的日期时间格式:1366 不正确的整数 值:'["1","3","66","68"]' 列 'infraction_id' 在第 1 行(SQL: 插入inspections (infraction_id, encouragement_id, user_idrequisition_idupdated_atcreated_at) 值 (["1","3","66","68"], 1, 1, 1, 2018-11-08 10:40:45, 2018-11-08 10:40:45))

【问题讨论】:

  • foreach迭代$request-&gt;infraction_id

标签: php laravel-5.4


【解决方案1】:

当您获得 infraction_id 的 n 个值数组时(当您在 HTML 中定义它时,您使用 name="infraction_id[]")您将需要添加多条记录...

foreach ( $request->infraction_id as $infraction_id ) {
    $inspection = new Inspection();
    $inspection->infraction_id = (int)$infraction_id;
    $inspection->encouragement_id = 1;
    $inspection->user_id = auth()->user()->id;
    $inspection->requisition_id = $request->input('requisition_id');
    $inspection->save();
    $inspection->requisitions()->update(['status' => 1]);
}
return redirect()->route('inspection-results.index');

【讨论】:

  • 我收到此错误:SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '"66"' for column 'infraction_id' at row 1 (SQL: insert into inspections` (infraction_id, encouragement_id, user_id, requisition_id, updated_at, created_at) 值 ("66", 1 , 1, 1, 2018-11-08 11:17:48, 2018-11-08 11:17:48))`
  • 感谢您的回答,它只保存了 1 个复选框,但在选中复选框时我想要多个复选框。
  • 抱歉 - 我把 return 留在了循环中。这(当然)将在第一项之后停止。我已经更正了我的代码。
猜你喜欢
  • 2021-04-21
  • 2021-02-14
  • 2021-07-23
  • 2021-08-22
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 2019-08-11
  • 1970-01-01
相关资源
最近更新 更多