好吧,也许这是一个菜鸟问题,但是当我尝试从表单存储数据时,我在查询中使用了$ 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
答案 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