在下拉选择中请求返回NULL

时间:2019-05-13 07:28:34

标签: laravel

我想将warehouse_id保存到我的数据库中,但是当我在提交表单后在控制器中dd($request->all())时,warehouse_id返回NULL

这是我的控制器代码:

public function receivedAll(Request $request, ItemPR $item_code)
{

    $item_code      = $request->item_code;
    $pr_qty         = $request->pr_qty;
    $warehouse_id   = $request->warehouse_id;
    dd($request->all());

}

这是我的刀片模板文件:

<form enctype="multipart/form-data" role="form" method="POST" action="{{route('inventory.receivedAll') }}">
    {{ csrf_field() }}
    <div class="form-group">
        <label for="input-warehouse_id">Warehouse List</label>

        <div class="form-group">
            <select class="custom-select" name="warehouse_id" id="input-warehouse_id">
                <option value="">Select Warehouse</option>
                @foreach($warehouse as $data)
                    <option value="{{$data->id}}">{{$data->name}}</option>
                @endforeach
            </select>
        </div>
    </div>
</form>

您可以看到它返回null ...

enter image description here

warehouse_id已在我的模型中变为可填充,但始终返回NULL,请帮助我修复此代码。

谢谢。

1 个答案:

答案 0 :(得分:0)

如果您的控制器正在接收NULL,那是因为正在从前端传递NULL

作为测试,您可以将<option value="{{$data->id}}">替换为<option value="TEST">,然后提交表格。如果您的warehouse_id现在为TEST,则您的$warehouse变量存在问题,因为它不包含id属性。

这是因为您的查询是:

$warehouse = Warehouse::select('name')->get();

由于您仅选择name,因此无法在模板中的Eloquent模型上访问id属性。您必须在select方法中包含要访问的任何属性,例如;

$warehouse = Warehouse::select('id', 'name')->get();