Не удается сохранить значение столбца таблицы из выпадающего списка в Laravel

#php #laravel #laravel-7

#php #laravel #laravel-7

Вопрос:

Я использую Laravel 7 и PHP 7.4.

Я пытаюсь создать зависимый выпадающий список в своей форме, используя ajax. Я отправляю column_id и column в ajax-ответе на мой выпадающий список. Мой выпадающий список работает абсолютно нормально, но есть проблема с моим запросом к базе данных или ответом ajax. В моем выпадающем списке отображаются значения столбца, но когда я пытаюсь сохранить в базе данных, сохраняется только «идентификатор» столбца, а не значение.

Я просто хотел отправить column_id и column оба в свой выпадающий список, но сохранить значение только в базе данных.

Блейд

 <form action="{{route('form_for_private_sellers')}}>
    <div class="form-group">
      <select name="make" id="make" data-dependent="model">
       <option value="">Select Make</option>
       <option value="254">Abarth</option>
      </select>
    </div>
    
    <div class="form-group">
     <select name="model" id="model">
       <option selected value="">Select Model*</option>
      </select>
    </div>
</form>
  

Javascript

 $("#make").change(function()
{
    var id=$(this).val();
    var make_id = id;

    var dependent = $(this).data('dependent');
    var _token = $('input[name="_token"]').val();

    $.ajax({
        url:"{{ route('fetchModel') }}",
        method:"POST",
        data:{make_id:make_id, _token:_token,dependent:dependent},
        success:function(result)
        {
            $('#' dependent).html(result);
        }
    });
});
  

Контроллер

 public function fetchModel(Request $request)
{
    $get_make_id = $request->get('make_id');
    $dependent = $request->get('dependent');


    $fetch_model = DB::table('auto_databases_one')
        ->select('model','model_id')
        ->distinct()
        ->where('make_id', '=', $get_make_id)
        ->where(function ($query) {
            $query->orWhere('is_active', '=', '1');
        })
        ->orderBy('model', 'ASC')
        ->get();

    $show_model = '<option value="">Select ' . ucfirst(dependent) . '</option>';
    foreach ($fetch_model as $row) {
        $show_model .= '<option value="' . $row->model_id . '">' . $row->model . '</option>';
    }
    echo $show_model;
}

public function form_for_private_sellers(Request $request)
{
      $store_seller = new Sellers();
    $store_seller->make = $request['make'];
    $store_seller->model = $request['model'];
}
  

Комментарии:

1. вы ничего не сохранили в своем методе контроллера. где находится часть сохранения?

2. @AndySong Я не знаю, что еще мне следует делать. Не могли бы вы предложить мне изменения, пожалуйста?

3. вы также должны опубликовать код, который вставляет что-то в базу данных

4. по крайней мере, вам нужно сообщить нам, какой столбец хотите сохранить, в какую таблицу в принципе, вам нужен еще один запрос на публикацию данных, теперь у вас есть только один запрос get. У вас должен быть ajax-запрос, когда вы нажимаете кнопку сохранить. И это то место, где можно сохранить запись.

5. @AndySong Теперь я обновил свой вопрос всем кодом. Извините за путаницу

Ответ №1:

Я предполагаю, что есть кнопка с id="save" .

 $("#save").click(function(e)
{
    e.preventDefault();
    const make = $("#make option:selected").val();
    const model = $("#model option:selected").val();
    const _token = $('input[name="_token"]').val();

    $.ajax({
        url:"{{route('form_for_private_sellers')}}",
        method:"POST",
        data:{make, _token, model},
        success:function(result)
        {
            console.log('all done');
        }
    });
});
  
 public function form_for_private_sellers(Request $request)
{
    $store_seller = new Sellers();
    
    //you may need to adjust this part as I do not know your properties called.
    $store_seller->make = $request->make;
    $store_seller->model = $request->model;
    
    $store_seller->save();
}
  

Комментарии:

1. Мой сценарий состоял не только в том, чтобы отправить значения, но и в том, чтобы посмотреть, что происходит не так с моим ajax-ответом, и это то, что я исправил с помощью вашей подсказки по коду. Спасибо ..!!!!!!!!!!