SQLSTATE[23000]:违反完整性约束:1048列';page_id';laravel 5不能为空


SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'page_id' cannot be null laravel 5

我使用的是laravel 5.2和jquery ajax

我正在开发一个应用程序,在该应用程序上我通过ajax传递更大的post数据。但对于更大的数据,我得到了这个错误

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'page_id' cannot be null laravel 5

这是我尝试过的php.ini设置

max_input_vars = 9000
post_max_size=30M

这是我的jquery ajax 代码

$.ajax({
      url : url+'/ajax-saveall-Collectionpost',
      type : 'POST',
      data : {'posts_data':posts_data,'page_id':page_id,'page_name':page_name,'collection_id':collection_id},
      dataType : 'JSON',
      beforeSend: function(data) {
            $("#loading").show()
      },
      success : function(data) {
             $("#loading").hide()},
      error : function(xhr, status, error) {
            console.log(xhr.responseText);
      }
     });

这是我的laravel控制器功能

public function saveall_Collectionpost(){
    $posts_data = Input::get('posts_data');
    $page_id = Input::get('page_id');
    $page_name = Input::get('page_name');
    $collection_id = Input::get('collection_id');
    if($this->user_id !== false){
        foreach ($posts_data as $key => $value) {
            $this->save_fav_post($page_id,$page_name,$posts_data[$key]['id'],$collection_id,$value);    
        }
        $return['error'] = false;
    }else{
        $return['error'] = 'login';
    }

我在这里面临的问题是,我丢失了php控制器函数中larager数据的数据

当i print_r the data of $posts_data array时,它只给了我66个数组索引,但是如果我得到了chrome网络选项卡并检查了从jquery ajax请求传递的表单数据,那么该数据有115个数组索引。page_id值也在表单数据中从jquery ajax请求传递,但是如果i echo the $page_id then i see no value

然后这意味着值正在被传递,但当我尝试像这样使用时,它们在laravel控制器函数中丢失了

$posts_data = Input::get('posts_data');
$page_id = Input::get('page_id');

从ajax后代码中删除dataType : 'JSON',。因为您正在向函数发送json字符串,该函数不被视为单独的变量。所以删除它,或者先在函数中解析json,然后将其设置为vars。还要确保您的page_id不是空白的。