Laravel:在表格中显示数据

时间:2016-01-26 13:50:41

标签: php forms laravel-5.1

我有一个表格,这个表格是针对员工的,每个员工都有每年的付款,管理员应该填写数据并保存,之前的数据也应填写在表格的正确位置,否则如果有的话没有数据输入字段应该为空,这是数据应该是什么样的:

enter image description here

但我得到的是: enter image description here

我的代码:控制器

$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
在我失去理智之前,任何人都知道如何解决这个问题,我尝试了很多方法,但我未能解决这个问题

1 个答案:

答案 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}}模型中添加一个返回值或空字符串的方法。