Laravel请求输入不是可用数据

时间:2019-11-13 15:16:31

标签: laravel eloquent request

好吧,也许这是一个菜鸟问题,但是当我尝试从表单存储数据时,我在查询中使用了$ request-> input来获取需要的插入字段,但是查询不会运行。注意:如果我只设置了$ project_id = 6,就可以运行。

 public function store(Request $request)
    {
         $project_id = $request->input('project_id');

         $company = Project::where('id', $project_id)->first();

         if(Auth::check()){
            $task = Task::create([
                'name' => $request->input('name'),
                'project_id' => $project_id,
                'company_id' => $company->id,
                'days' => $request->input('days'),
                'hours' => $request->input('hours'),
                'user_id' => Auth::user()->id
            ]);
            if($task){
                return redirect()->route('tasks.index')
                ->with('success' , 'Task created successfully');
            }
        }

            return back()->withInput()->with('errors', 'Error creating new task');
    }

注意:

我尝试了一些我在网上发现的不同事情,例如$ project_id = $ request-> project_id或$ project_id = $ request ['project_id']

request-> input是否仅用于插入并且不能用作普通变量?

更新:这是它来自的create.blade表格

@extends('layouts.app')

@section('content')



<div class="row col-md-9 col-lg-9 col-sm-9 pull-left " >
<h1>Add a Task </h1>

      <!-- Example row of columns -->
      <div class="col-md-12 col-lg-12 col-sm-12" style="background: white; margin: 10px;" >

      <form method="post" action="{{ route('tasks.store') }}">
                            {{ csrf_field() }}



                            <div class="form-group">
                                <label for="project-name">Name<span class="required">*</span></label>
                                <input   placeholder="Enter name"  
                                          id="project-name"
                                          required
                                          name="name"
                                          spellcheck="false"
                                          class="form-control"

                                           />
                            </div>




                            <div class="form-group">
                                <label for="task-days">Days Taken<span class="required"></span></label>
                                <input     
                                          id="task-days"
                                          required
                                          name="days"
                                          type="number"
                                          spellcheck="false"
                                          class="form-control"

                                           />
                            </div>

                            <div class="form-group">
                                <label for="task-hours">Hours Taken<span class="required"></span></label>
                                <input     
                                          id="task-hours"
                                          required
                                          name="hours"
                                          type="number"
                                          spellcheck="false"
                                          class="form-control"

                                           />
                            </div>



                                  <input   
                                  class="form-control"
                                  type="hidden"
                                          name="project_id"
                                          value="{{ $project_id }}"
                                           />
                     @if($projects != null)
                                           <div class="form-group">
                                           <label for="company-content">Select Project</label>
                                           <select name="project_id" class="form-control">
                                           @foreach($projects as $project)
                                           <option value="{{$project_id}}">{{ $project->name }}</option>
                                           @endforeach
                                           </select>

                            </div>
                            @endif

                            <div class="form-group">
                                <input type="submit" class="btn btn-primary"
                                       value="Submit"/>
                            </div>
                        </form>


      </div>
</div>

      <div class="col-sm-3 col-md-3 col-lg-3 col-sm-3 pull-right">
          <div class="sidebar-module sidebar-module-inset">
          <h4>Actions</h4>
            <ol class="list-unstyled">

            <li><a href="/tasks">All tasks</a></li>
            </ol>
          </div>


        </div>


    @endsection

1 个答案:

答案 0 :(得分:1)

让我们在下面检查您的Task.Delay

<form>

在此代码中,您有一个名为<input class="form-control" type="hidden" name="project_id" value="{{ $project_id }}"/> @if($projects != null) <div class="form-group"> <label for="company-content">Select Project</label> <select name="project_id" class="form-control"> @foreach($projects as $project) <option value="{{ $project_id }}">{{ $project->name }}</option> @endforeach </select> </div> @endif 的隐藏输入,并且如果"project_id"不是$projects,则还有一个null名为{{ 1}}。多个具有相同名称的元素是无效的,并且可能导致问题。

第二,在这一行:

select

"project_id"与上面<option value="{{ $project_id }}">{{ $project->name }}</option> 输入中的值相同。当您遍历$project_id时,应为hidden

$projects

最后,如果要发送$project->id,请确保它是有效值,并考虑调整逻辑以仅在<option value="{{ $project->id }}">{{ $project->name }}</option> 为{{ 1}}:

$project_id

所有这些调整后,您应该可以使用hidden

检索期望值。