Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite SQLSTATE[23000]:laravel5.8.35中的完整性约束冲突_Sqlite_Laravel 5_Controller - Fatal编程技术网

Sqlite SQLSTATE[23000]:laravel5.8.35中的完整性约束冲突

Sqlite SQLSTATE[23000]:laravel5.8.35中的完整性约束冲突,sqlite,laravel-5,controller,Sqlite,Laravel 5,Controller,我对laravel和sqlite非常陌生,正在尝试在我的菜品列表中创建一个新的“菜品”,但是,一旦我提交创建表单,我会收到以下错误: SQLSTATE[23000]:完整性约束冲突:19非空 约束失败:disks.user_id(SQL:插入“disks”(“名称”), “价格”、“用户id”、“更新时间”、“创建时间”)价值(Supreme Pizza, (2019-09-29 05:43:422019-09-29 05:43:42) 我在web.php、DishController、User

我对laravel和sqlite非常陌生,正在尝试在我的菜品列表中创建一个新的“菜品”,但是,一旦我提交创建表单,我会收到以下错误:

SQLSTATE[23000]:完整性约束冲突:19非空 约束失败:disks.user_id(SQL:插入“disks”(“名称”), “价格”、“用户id”、“更新时间”、“创建时间”)价值(Supreme Pizza, (2019-09-29 05:43:422019-09-29 05:43:42)

我在web.php、DishController、UserController和create.blade.php表单本身中尝试了许多不同的修改,但没有一个成功。这里也有一些类似的问题,但没有一个解决方案对我的问题有帮助

这是我的web.php文件

Route::resource('dish', 'DishController');
Route::resource('user', 'UserController');

Auth::routes();

Route::get('/', 'UserController@index');
Route::get('/show/{id}', 'UserController@show');
Route::get('/show/{id}', 'UserController@create');
Route::get('users/{user}',  ['as' => 'users.edit', 'uses' => 'UserController@edit']);
Route::patch('users/{user}/update',  ['as' => 'users.update', 'uses' => 'UserController@update']);

Route::get('/dish', 'DishController@index');
Route::get('/show/{id}', 'DishController@show');
Route::get('/dish/create', ['as' => 'dish.create', 'uses' => 'DishController@create']);
Route::get('dishes/{dish}',  ['as' => 'dish.edit', 'uses' => 'DishController@edit']);
Route::patch('dishes/{dish}/update',  ['as' => 'dishes.update', 'uses' => 'DishController@update']);
Route::get('/dish/{dish}', 'DishController@destroy');
我的Dish控制器的相关部分:

 public function index()
    {
        $dishes = Dish::all();
        return view('dishes.index')->with('dishes', $dishes);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return View::make('dishes.create_form')->with('users', User::all());

    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $this->validate($request, [
            'name' => 'required|max:255',
            'price' => 'required|integer|min:1',
            'user' => 'exists:user,id'
        ]);

        $dish = new Dish();
        $dish->name = $request->name;
        $dish->price = $request->price;
        $dish->user_id = $request->user;
        $dish->save();
        return redirect("dish/$dish->id");
    }
以及我的create_表格的相关部分:

<form method="POST" action='{{url("dish")}}'>
        {{csrf_field()}}
        <p><label>Name: </label><input type="text" name="name" value="{{old('name')}}"></p>
        <p><label>Price: </label><input type="text" name="price" value="{{old('price')}}"></p>
        <p><select name="Restaurant">
        @foreach ($users as $user)
            @if ($user->role == 'restaurant')
            <option value="{{$user->id}}" selected="selected">{{$user->name}}</option>
            @endif
        @endforeach
        </select></p>
        <input type="submit" value="Create">
    </form>

我一辈子都搞不清楚问题出在哪里,因此非常感谢您的帮助。

在您的PHP控制器中,您使用的是$request->user。我在你的HTML表单中没有看到。所以,如果您想添加当前用户。您可以使用Auth

public function store(Request $request)
{
    $this->validate([
        'name' => 'required|max:255',
        'price' => 'required|integer|min:1',
        'user' => 'exists:user,id'
    ]);
    $dish = new Dish();
    $dish->name = $request->name;
    $dish->price = $request->price;
    $dish->user_id = Auth::user()->id;
    $dish->save();
    return redirect("dish/$dish->id");
}
请在控制器顶部使用Auth

use Auth;

$request->user
中有什么内容?我怀疑用户id设置不正确。@Zeshan我不太确定你在问什么。我现在得到的“验证规则唯一性”至少需要1个参数```是,但您的错误非空约束失败:disps.user\u id是关于user\u id的。您没有定义它。
use Auth;