2017-08-04 1 views
0

im derzeit Laravel-Excel (MaatWebsite) mit und wollte prüfen, ob Excel-Daten mit den Daten in der Datenbank "Möbel" Tisch gleicheLaravel, was ist der beste/alternative Weg, um zu prüfen, ob der Datensatz existiert und sie in der Tabelle anzeigt?

-Controller

// 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(); 

Ansicht

<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-Datei

enter image description here

+0

anyone? bump for anwer – begineeeerrrr

Antwort

1

Die effizienteste Möglichkeit besteht darin, zuerst die Datenbankergebnisse zu indexieren, anstatt sie zu loopen. Laravel hat eine $collection->keyBy('id'), so dass Sie später $collection->get($id) können.

gesagt haben, dass Sie es auf diese Weise tun können:

<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

ok ich verstehe, aber wissen Sie, wie bekomme ich die ID der Tabelle Wert? Wie Sie das Bild sehen können, das ich poste, "Chair-abc" gehört zur ID von "32" in Tischmöbeln, während "Chair-123" zur ID von "42" in Tisch funitures sowie ... gehört. Weißt du, wie man seine ID in Ansichten bekommt? Ich denke, als @if zu tun ($ check_furnitures-> get ($ row [1])! == null) – begineeeerrrr

+0

mein Rat ist, können Sie nicht nur Zahlenfolge zu überprüfen, ob es existiert. Am besten fügen Sie eine Spalte mit IDs in Ihre Excel-Datei ein, damit Sie parallel zur Datenbank prüfen können. –

+0

mit Dank erwähnt – begineeeerrrr

Verwandte Themen