目前我正在使用Laravel-Excel(MaatWebsite)并想检查excel数据是否与数据库“家具”表中的数据相同
控制器
// assume $id is retrieve from parameter
$check_furnitures = Furniture::where('company_no', $id)->get();
$rows = Excel::load('storage\\app\\public\\upload\\furniture.xlsx', function($reader){$reader->noHeading();$reader->skipRows(1)})->get();
查看
<table>
<thead>
<tr>
<td>Chair Name></td>
<td>Desk Name></td>
<td>Carpet Name></td>
<td>Status</td>
</tr>
</thead>
<tbody>
<?php $arr = array(); ?>
@foreach($rows as $key => $value)
@foreach($check_furnitures as $fur)
@if(
$fur->chairs == $value[1] &&
$fur->desks == $value[2] &&
$fur->carpets == $pvalue[3]
)
<?php $temp_array[] = $value[0] ?>
@endif
@endforeach
@endforeach
<tr>
<td>{{$value[1]}}</td>
<td>{{$value[2]}}</td>
<td>{{$value[3]}}</td>
<td>
@foreach($arr as $test)
@if($test == $value[0])
DUPLICATED VALUE
@endif
@endforeach
</td>
<tr>
<table>
Excel文件
答案 0 :(得分:1)
最有效的方法是首先索引数据库结果而不是循环。 Laravel有一个$collection->keyBy('id')
,以便您稍后$collection->get($id)
。
话虽如此,你可以这样做:
<table>
<thead>
<tr>
<td>Chair Name></td>
<td>Desk Name></td>
<td>Carpet Name></td>
<td>Status</td>
</tr>
</thead>
<tbody>
@php
$arr = array();
$check_furnitures->keyBy('number');
@endphp
@foreach ($rows as $key => $row)
<tr>
<td>{{ $row->chair }}</td>
<td>{{ $row->desk }}</td>
<td>{{ $row->table }}</td>
<td>
@if($check_furnitures->get($row->number) !== null)
DUPLICATED VALUE
@endif
</td>
</tr>
@endforeach
</tbody>
</table>