2017-08-04 51 views
0

目前即時通訊使用Laravel-Excel文件(MaatWebsite),並要檢查Excel中的數據是否相同與數據庫 「傢俱」 表中的數據Laravel,檢查記錄是否存在並在表格中顯示它們的最佳/備選方法是什麼?

控制器

// 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文件

enter image description here

+0

人?碰碰撞 – begineeeerrrr

回答

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> 
+0

好吧,我明白了,但你知道我如何得到表值的id?因爲你可以看到我發佈的圖片,「Chair-abc」屬於表格傢俱中的「32」,而「Chair-123」屬於表格中的「42」,也是如此。你知道如何在視圖中獲得它的ID嗎?我正在考慮做@if($ check_furnitures-> get($ row [1])!== null) – begineeeerrrr

+0

我的建議是,你不能只依賴數字序列來檢查它是否存在。最好的做法是在你的excel文件中包含一列ID,這樣你就可以檢查數據庫。 –

+0

注意到謝謝 – begineeeerrrr

相關問題