Laravel AJAX передает только половину данных - PullRequest
0 голосов
/ 07 мая 2018

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

вот мой ajax, который не работает.

script

<script>
  $( document ).ready( function() {
    $("#modalsave1").click(function(e){
      e.preventDefault();
    $.ajax({
      type: "post",
      url: "{{ url('admin/addnewsuboptionprodcreat') }}",
      data: {
        '_token': $('input[name=_token]').val(),
        'subopttitle': $('input[name=subopttitle]').val(),
        'opt_id': $('#opt_id').val(),
        'subopt_price': $('#subopt_price').val(),
        'optstat_id': $('#optstat_id').val(),
      },
      success: function (data) {
          console.log(data);
      },
      error: function (data) {
          console.log('Error:', data);
      }
    });
  });
  });
</script>

blade form

{{Form::open()}}

// get parent
{{ Form::label('opt_id', 'Parent Option') }}
<select class="form-control" id="opt_id" name="opt_id">
  <option value="">Select</option>
  @foreach($options as $option)
    <option value="{{ $option->id }}">{{ $option->title }}</option>
  @endforeach
</select>

//get title
{{ Form::label('subopttitle', 'Name') }}
{{ Form::text('subopttitle', null, array('id' => 'subopttitle', 'class' => 'form-control')) }}

//get price
{{ Form::label('subopt_price', 'Price') }}
{{ Form::text('subopt_price', null, array('id' => 'subopt_price', 'class' => 'form-control')) }}

//get status
{{ Form::label('optstat_id', 'Include filters?') }}
<select class="form-control" id="optstat_id" name="optstat_id">
  <option value="">Select</option>
  @foreach($statuses as $status)
    <option value="{{ $status->id }}">{{ $status->title }}</option>
  @endforeach
</select>

//save it
<button type="submit" id="modalsave1" class="modalsave1 btn btn-primary">Save</button>

{{Form::close()}}

а вот мой controller

public function addnewsuboptionprodcreat(Request $reqs)
    {
      $add = Suboption::create([
          'title' => $reqs->subopttitle,
          'option_id' => $reqs->opt_id,
          'price' => $reqs->subopt_price,
          'status_id' => $reqs->optstat_id,
      ]);

      if($add){
        Session::flash('success', 'Your Sub-option saved successfully.');
      }else{
        Session::flash('danger', 'Your Sub-option didn\'t save successfully.');
      }
    }

route

  Route::post('/addnewsuboptionprodcreat', 'ProductController@addnewsuboptionprodcreat')->name('addnewsuboptionprodcreat');

Интересно, точно такой же метод just different inputs работает, а это нет.

Error

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`mysite`.`suboptions`, CONSTRAINT `suboptions_option_id_foreign` FOREIGN KEY (`option_id`) REFERENCES `options` (`id`)) (SQL: insert into `suboptions` (`title`, `price`, `updated_at`, `created_at`) values (Yellow, 5000, 2018-05-07 07:57:16, 2018-05-07 07:57:16))

как вы видите в последней строке ошибки, я получаю только title price и timestamps, но ничего для parent и status

есть идеи?

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Модель подопции Добавить следующий Защищенный $ guarded

class Suboption
{
    /**
    * The attributes that aren't mass assignable.
    *
    * @var array
    */
    protected $guarded = [];
}
0 голосов
/ 07 мая 2018

Добавьте option_id и status_id в protected $fillable in Suboption Модель

class Suboption
{
    protected $fillable = ['title','price','option_id','status_id'];
    ....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...