使用 laravel 在数据库中不保存多个下拉值的第二个下拉值

Posted

技术标签:

【中文标题】使用 laravel 在数据库中不保存多个下拉值的第二个下拉值【英文标题】:The second dropdown value for multiple dropdown value NOT SAVE in database using laravel 【发布时间】:2021-08-28 00:50:55 【问题描述】:

大家好!首先,我的编码都是关于动态下拉值的,现在的问题是第二个下拉值没有保存在数据库中。我错过或错了哪一部分?

查看:-

<div class="col-md-3">
    <select class="shiftPatternID" name="inputShiftPatternID" id="inputShiftPatternID" required style="width: 100%">
        <option value="" hidden disabled selected>Please Select</option>
        @foreach ($shiftpattern as $singleshiftpattern)
            <option value=" $singleshiftpattern->id "> $singleshiftpattern->id  -  $singleshiftpattern->code </option>
        @endforeach
    </select>
</div>

<div class="col-md-3">
    <select class="sapCode" name="inputSapCode" id="inputSapCode" required style="width: 100%">
        <option value="0" disabled="true" selected="true">Please Select</option>
    </select>
</div>

使用 jquery 脚本查看第二个下拉菜单:-

$(document).ready(function() 
    $(document).on('change','.shiftPatternID',function() 
        var cat_id=$(this).val();
        var div=$(this).parent().parent().parent();
        var op=" ";

        $.ajax(
            type: 'get',
            url: '!! URL::to('findSapCode') !!',
            data: 
                'id':cat_id
            ,
            
            success: function(data) 
                op+='<option value="0" selected disabled>Please Select</option>';
                for (var i=0;i<data.length;i++) 
                    op += '<option value="'+data[i].id+'">'+data[i].code+' - '+data[i].description+'</option>';
                

                $('.sapCode').html('') ; 
                $('.sapCode').append(op);
            ,
            error: function() 

            
        );
    );
);

控制器:-

public function store(Request $req)

    $var_shift_pattern_id = $req ->inputShiftPatternID;
    $var_sap_code = $req ->inputSapCode;

    $usp_var = new UserShiftPattern;
    $usp_var-> shift_pattern_id = $var_shift_pattern_id;
    $usp_var-> sap_code = $var_sap_code;
    $usp_var->save();
    $execute = UserHelper::LogUserAct($req, "User Work Schedule Management", "Create User Work Schedule " .$req->inputUserID);
    $feedback_text = "Successfully created User Work Schedule ".$req->inputUserID.".";
    $feedback_title = "Successfully Created";

    return redirect(route('usp.index', [], false))
        ->with([
            'feedback' => true,
            'feedback_text' => $feedback_text,
            'feedback_title' => $feedback_title
        ]);

路线:-

Route::get('/findSapCode','Admin\UserShiftPatternController@findSapCode');
Route::get('/admin/usershiftpattern', 'Admin\UserShiftPatternController@index')->name('usp.index');
Route::post('/admin/usershiftpattern/add', 'Admin\UserShiftPatternController@store')->name('usp.store');
Route::post('/admin/usershiftpattern', 'Admin\UserShiftPatternController@index')->name('usp.index');

【问题讨论】:

能否提供刀片模板代码 @John Lobo 已经编辑了我的问题 你也可以显示数据库结构或尝试 dd($req->all()) 我应该把 dd($req->all()) 放在哪里? 之前 $var_shift_pattern_id = $req ->inputShiftPatternID;这个 【参考方案1】:

问题在于 jquery 中错误传递的选项值。它应该是 data[i].code 而不是 data[i].id

op+='<option value="'+data[i].code+'">'+data[i].code+" "+data[i].description+'</option>'

您可能还需要更新查询以显示描述

$data=ShiftPattern::select('code','id','description')->where('id',$request->id)->take(100)->get();
    

【讨论】:

以上是关于使用 laravel 在数据库中不保存多个下拉值的第二个下拉值的主要内容,如果未能解决你的问题,请参考以下文章

保存多个输入 Laravel 5.6

如何在 laravel 8 中保存嵌套的下拉菜单

laravel,在另一个表的下拉列表中显示数据,但保存在当前表中

Laravel:填写一个包含多个下拉列表的表单

表单在 laravel 7 中不起作用,啥也没发生

在 Laravel 中不与 whereBetween 合作的地方