我有一个表格,这个表格是针对员工的,每个员工都有每年的付款,管理员应该填写数据并保存,之前的数据也应填写在表格的正确位置,否则如果有的话没有数据输入字段应该为空,这是数据应该是什么样的:
我的代码: 的控制器
$years = Year::with('employeeData')->get();
$indicators = Indicator::all();
return view('sustainability-data.input-data', compact('years', 'indicators'));
查看
@foreach($employees as $index=>$employee)
<tr>
<td>{{$employee->name}}</td>
@foreach($years as $year)
<td>
@foreach($year->employeeData as $datum)
@if($datum->employee_id == $employee->id)
{!! Form::text('row[$index][value]' ,$datum->value,['class' => 'form-control']) !!}
@endif
@endforeach
</td>
@endforeach
在我失去理智之前,任何人都知道如何解决这个问题,我尝试了很多方法,但我未能解决这个问题
答案 0 :(得分:2)
看起来问题在于@foreach($year->employeeData as $datum)
的结构。我假设如果员工还没有给定年份的数据,那么@if($datum->employee_id == $employee->id)
永远不会评估为true
。如果是这种情况,那么输出表单字段的代码将不会运行。
转换目前所用内容的最简单方法是将@foreach
替换为以下内容:
@if($year->emplyeeData()->where('employee_id', $employee->id)->count())
{!! Form::text('row[$index][value]', $year->emplyeeData()->where('employee_id', $employee->id)->get()->value, ['class' => 'form-control']) !!}
@else
{!! Form::text('row[$index][value]', '', ['class' => 'form-control']) !!}
@endif
请注意,我已经对您的模型的设置进行了一些猜测,因此可能需要调整此代码。
我还会考虑从视图中删除此逻辑,并可能在名为Employee
的{{1}}模型中添加一个返回值或空字符串的方法。