' USER_ID'在Laravel 5.4中没有默认值Error

时间:2017-09-26 13:21:26

标签: php mysql laravel

在我正在处理的项目中,我有一个用户表,我有另一个表,其中包含分配给他们的项目。我使用此代码:

ErrorConstructor

在控制器I中使用此代码:

<form method="POST" action="/User/{{$user->id}}/projects">
{{csrf_field()}}
<div class="form-group">
    <textarea name="name"></textarea>
</div>
<div class="form-group">
    <textarea name="description" placeholder="Enter project description here"></textarea>
</div>

<div class="form-group">
    <button type="submit">Add Project for User</button>
</div>

项目表有这个代码:

public function store(User $user)
{
    Project::create([
        'user_id ' => $user->id,
        'name' => request('name'),
        'description' => request('description'),


    ]);


    return back();
}

现在,当我为用户添加项目时,我收到此错误:

 public function up()
{
    Schema::create('projects', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('user_id');
        $table->string('name');
        $table->string('description');
        $table->timestamps();
    });
}

我如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

如果POST的{​​{1}}路由到/User/{{$user->id}}/projects,我认为您需要将其更新为store(User $user)

store($user_id)

路由只是传递当前用户的ID,而不是用户模型。

答案 1 :(得分:0)

我正在编辑我对堆叠中朋友的优惠的看法,例如

<form method="POST" action="/User/{{$user->id}}/projects">
{{csrf_field()}}
<input type="hidden" name="user_id" value="{{$user->id}}">
<div class="form-group">
    <textarea name="name" placeholder="Enter project description here"></textarea>
</div>
<!--<div class="form-group">
    <textarea name="description" placeholder="Enter project description here"></textarea>
</div>-->

<div class="form-group">
    <button type="submit">Add Project for User</button>
</div>

编辑我的控制器,例如此代码

 public function store(User $user)
      {
    Project::create(request(['name', 'user_id']));
    return back();
        }

答案 2 :(得分:-1)

发生该错误是因为未设置store方法中的$user->id值。如果user_id可填写,则使用隐藏输入是一种选择。

    <form method="POST" action="/User/{{$user->id}}/projects">
        {{csrf_field()}}
        <input type="hidden" name="user_id" value="{{$user->id}}">
        <div class="form-group">
           <textarea name="name"></textarea>
        </div>
        <div class="form-group">
           <textarea name="description" placeholder="Enter project description here"></textarea>
        </div>
        <div class="form-group">
           <button type="submit">Add Project for User</button>
        </div>
   </form>

然后在控制器中:

public function store()
{
    Project::create([
        'user_id ' => request('user_id'),
        'name' => request('name'),
        'description' => request('description'),
    ]);
    return back();
}