如何解决Laravel中未定义的索引?

如何解决Laravel中未定义的索引?,laravel,Laravel,我想展示这样的付款方式: 和我的付款表结构: 我试过这个: $months = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']; $collection = App\Payment::all(); $payments = $collection->groupBy('student_id'); return view('payment', compact('p

我想展示这样的付款方式:

和我的付款表结构:

我试过这个:

 $months = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'];
 $collection = App\Payment::all();
 $payments = $collection->groupBy('student_id');
 return view('payment', compact('payments', 'months'));
我的刀片代码是:

@foreach($payments as $payment)
<tr>
    <th>{{ $payment['student_id'] }}</th>
    @foreach($months as $month)
    <td>
        <i class="{{ $month == $payment['month'] ? 'fa fa-check text-success' : 'fa fa-times text-danger' }} "></i>
    </td>
    @endforeach
</tr>
@endforeach
@foreach($payments as$payment)
{{$payment['student_id']}
@foreach(月份为$month)
@endforeach
@endforeach

我得到了未定义的索引错误。但是当我把$payment[0]['student_id']和$payment[0]['month']加在一起时,我会这样做。我没有得到任何错误。但我没有完全得到我想要的。

在控制器中执行此操作

$months = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'];
 $payments = App\Payment::orderBy('student_id','ASC')->get();
 return view('payment', compact('payments', 'months'));
在你的刀片文件中试试这个

@foreach($payments as $payment)
<tr>
    <th>{{ $payment->student_id }}</th>
    @foreach($months as $month)
    <td>
        <i class="{{ $month == $payment->month ? 'fa fa-check text-success' 
          : 'fa fa-times text-danger' }} "></i>
    </td>
    @endforeach
</tr>
@endforeach
@foreach($payments as$payment)
{{$payment->student_id}
@foreach(月份为$month)
@endforeach
@endforeach

试着这样做:

@foreach($payments as $key => $value)
<tr>
    <th>{{ $key }}</th>
    @foreach($months as $month)
        <td>
            <i class="{{ in_array($month, $value->pluck('month')->all()) ? 'fa fa-check text-success' : 'fa fa-times text-danger' }} "></i>
        </td>
    @endforeach
</tr>
@endforeach
[
    'ID1' => [
        ['student_id' => 'ID1', 'month' => 'JAN' ...],
        ['student_id' => 'ID1', 'month' => 'FEB' ...],
    ],
    'ID2' => [
        ['student_id' => 'ID2', 'month' => 'APR' ...],
    ],
]
这就是为什么我做了键值循环,以获得学生id作为键值,并将该学生的付款作为值,我们提取月份以获得给定学生支付的月份数组

['JAN', 'FEB'] // for the student with ID1

然后,
in_array
方法测试在月循环中的当前月份是否存在于学生的已付款月份中,如果是,则显示成功,否则显示危险。

使用
isset
检查是否存在
$payment['month']
。您可以自己调试代码,您可以分组。。。所以你有一个数组,看看这里并调试:我试图返回$payment,我得到了这个。请查看此$payment['month']它不存在。您可以添加
dd($payments)?并向我们显示resultI get this new error属性[student_id]在此集合实例上不存在。仍然获取相同的错误。请看这个截图。我编辑了答案@ShahadatHossain。请尝试一下,这是有效的,但不完全有效。因为有三排。但是我只想要一个学生一排(我很乐意帮忙:)如果你想要一些解释,我可以解释:)是的。请描述一下。是的。我理解。非常感谢。你真的很棒。@ShahadatHossain如果你想更多地谈论其他帮助,请检查这个房间:)