【问题标题】:Integrity constraint violation: 1048 Column 'cd_id' cannot be null in laravel完整性约束违规:1048 列 'cd_id' 在 laravel 中不能为空
【发布时间】:2021-09-25 19:34:48
【问题描述】:

SQLSTATE[23000]:完整性约束违规:1048 列“cd_id”不能为空(SQL:插入commvendordatanew_datecd_idcn_idunit_idvender1,@ 987654334@,vender3vender4) 值(07/17/2021,?,?,?,?,?,?,?))

如何使用 laravel 消除此错误

表单或刀片截图

<form action="{{route('auth.commvendordata')}}" method="POST" class="shadow-lg p-4 w-f">
                    @csrf
                    <div class="modal-date">
                        <label>Select Date:&emsp;&emsp;</label>
                        <input type="text" name="new_date" placeholder="Select Price Date" class="getdate"/>
                        <button type="button" name="loadform" class="btn btn-warning load-form">Load Form</button>

                    </div>
                  <div class="data" style="display:none;">
                    <table class="table table-bordered" id="table">
                        <thead class="bg-success">
                            <tr>
                                <th scope="col" class="td-size">CCode</th>
                                <th scope="col" class="td-size">CName</th>
                                <th scope="col" class="td-size">CUnits</th>
                                <th scope="col" class="td-size">Vendor 1</th>
                                <th scope="col" class="td-size">Vendor 2</th>
                                <th scope="col" class="td-size">Vendor 3</th>
                                <th scope="col" class="td-size">Vendor 4</th>
                            </tr>
                        </thead>
                        
                            <tr id="template">

                                    <td><input type="text" name="ccode[]" class="td-size"></td>
                                    <td><input type="text" name="cname[]" class="td-size"></td>
                                    <td><input type="text" name="cunit[]" class="td-size"></td>
                                    <td><input type="text" name="vendor1[]" class="td-size"></td>
                                    <td><input type="text" name="vendor2[]" class="td-size"></td>
                                    <td><input type="text" name="vendor3[]" class="td-size"></td>
                                    <td><input type="text" name="vendor4[]" id="addrow" class="td-size"></td>
                            </tr>
                        
                    </table>
                  </div>
                  <div class="modal-footer">
                  <button type="submit" name="commdatasavebtn" class="btn btn-success">Save</button>
                </div>
                </form>

控制器截图

函数commvendordata(请求$request){

$cvendordata = new commvendordata;

$new_date = $request->new_date;
$ccode = $request->ccode;
$cname = $request->cname;
$cunit = $request->cunit;
$vender1 = $request->vendor1;
$vender2 = $request->vendor2;
$vender3 = $request->vendor3;
$vender4 = $request->vendor4;
    for($i=0; $i<count($ccode); $i++) {
            $commdata = [
                'new_date'  => $new_date,
                'cd_id'     => $ccode[$i],
                'cn_id'     => $cname[$i],
                'unit_id'   => $cunit[$i],
                'vender1'   => $vender1[$i],
                'vender2'   => $vender2[$i],
                'vender3'   => $vender3[$i],
                'vender4'   => $vender4[$i]
            ];
            DB::table('commvendordata')->insert($commdata);
    }
    Session::put('Success',"Save Data Successfully...!");
    return back();

}

数据库截图

错误截图

表单截图

【问题讨论】:

  • 用实际代码更新您的问题,而不是代码截图
  • 截图的代码

标签: php database laravel laravel-5


【解决方案1】:

解决方案 1

改变你的 for 循环

for($i=0; $i<count($ccode); $i++)

for($i=0; $i<count($ccode)-1; $i++)

解决方案 2

之前

DB::table('commvendordata')->insert($commdata);

添加这个

if (trim(implode('', array_values($commdata))) == '') continue;

它将跳过所有字段为空的行(在您的情况下为最后一行)。 此外,您应该添加一些验证以确保用户始终为数据库中所需的字段输入一些值。

【讨论】:

    【解决方案2】:

    当您在表格的最后一行输入空白时,错误就来了。把数据放在你的最后一行,我想问题会解决的。在您的数据库表中插入行之前还要进行一些验证。

    【讨论】:

    • 我在最后一个单元格中插入行动态方式焦点插入新行总是最后一个为空。如何改进我的代码忽略最后一个单元格
    • 您需要使用javascript或jquery在最后一行添加添加、删除按钮。然后,每当您不需要额外的行时,只需删除它即可。 stackoverflow和其他地方有很多代码。只需检查并更新即可。
    • 当我们点击保存按钮时,Laravel 中没有办法忽略空行吗?
    • 我正在使用 array_filter() 函数但它的其他错误
    • “当我们点击保存按钮时,Laravel 中没有办法忽略空行吗?”是的,您可以通过手动操作以及在将数据插入数据库之前忽略它。希望这会解决问题。
    猜你喜欢
    • 2016-11-07
    • 2016-09-05
    • 1970-01-01
    • 2018-05-01
    • 2021-01-13
    • 2020-03-29
    • 2018-03-04
    • 2018-05-17
    • 1970-01-01
    相关资源
    最近更新 更多