SQLSTATE [23000]:违反完整性约束:1048列“ restaurant_id”不能为空

时间:2019-07-11 09:08:34

标签: laravel laravel-5 laravel-blade

我正在尝试将评论的路线ID(包含餐厅ID)存储在评论表中名为restaurant_id的变量中。这是存储功能:

public function store(Request $request) {
    if (! Auth::check()) {
        return redirect('/index');
    }

    $review = new Review;
    $review->user_id = auth()->user()->id;
    $review->restaurant_id = $request->route('id');
    $review->value = $request->input('value');
    $review->save();
}

这是饭店资料上指向评估模板Add review的链接。这是表单上的操作:

{!!Form::open(['action' => ['ReviewsController@store'], 'method'=>'POST', 'enctype'=>'multipart/form-data'])!!}

这是评论模板:

<html>
    {!!Form::open(['action' => ['ReviewsController@store',], 'method'=>'POST', 'enctype'=>'multipart/form-data'])!!}
        <div class="form-group"> 
            {{Form::textarea('value', null, ['id'=>'value', 'placeholder'=>'Insert here', 'name'=>'value'])}}
        </div>

        {{Form::submit('submit', ['class'=>'btn btn-primary', 'type'=>'submit', 'id'=>'submit'])}}

    {!!Form::close()!!}
</html>

提交时出现以下错误:

  

SQLSTATE [23000]::违反完整性约束:1048列“ restaurant_id”不能为空(SQL:插入评论(user_id,restaurant_id,value,updated_at,created_at)的值(1 、、、 kkkkbkb,2019-07-11 08:39:10,2019-07-11 08:39:10))

2 个答案:

答案 0 :(得分:0)

您从哪里获得此价值? $request->route('id');。 restaurant_id没有看到此$request->route('id');

答案 1 :(得分:0)

在您的表单中添加如下所示的route参数:

{!!Form::open(['action' => ['ReviewsController@store',],'method'=>'POST',
            'enctype'=>'multipart/form-data'])!!}
   <input name="restaurant_id" type="hidden" value="{{ Request::route('id') }}">
   ...
{!!Form::close()!!}

注意 {{ Request::route('id') }} id是您在路径参数中使用的名称。

在您的控制器中:

    $review=new Review;
    $review->user_id=auth()->user()->id;
    $review->restaurant_id=$request->get('restaurant_id'); 
    $review->value=$request->get('value');
    $review->save();