Nie wiem, dlaczego żądany wiersz z informacją „Nie znaleziono rekordu” nie jest wyświetlany, mimo że żadne dane nie pasują do Selangor

BazaarLocController:

public function index()
    {
        $bzr = BzrLocation::where('area', 'Perlis')->get();
        $bzr2 = BzrLocation::where('area', 'Selangor')->get();
        $bzr3 = BzrLocation::where('area', 'Pahang')->get();
        $bzr4 = BzrLocation::where('area', 'Johor')->get();
        $bzr5 = BzrLocation::where('area', 'Melaka')->get();
        $bzr6 = BzrLocation::where('area', 'Negeri Sembilan')->get();

    $allbzr = [
        'bzrloc' => $bzr,
        'bzrloc2' => $bzr2,
        'bzrloc3' => $bzr3,
        'bzrloc4' => $bzr4,
        'bzrloc5' => $bzr5,
        'bzrloc6' => $bzr6
    ];

    return view('admin.bazaarloc')->with($allbzr);
   }

Bazaarloc.blade.php:

<table class="table table-hover">
   <caption>Table 2</caption>
   <thead class="thead-dark">
     <tr>
       <th scope="col" style="width: 8%; vertical-align: top;">No.</th>
       <th scope="col" style="width: 60%; vertical-align: top;">Location</th>
       <th scope="col" style="width: 21%; vertical-align: top;">Amount Approved</th>
       <th scope="col" style="width: 21%; vertical-align: top;">Description</th>
       <th scope="col" style="width: 4%;"></th>
       <th scope="col" style="width: 4%;"></th>
     </tr>
   </thead>
   <tbody>
     @php
     $counting = 0
     @endphp
     @foreach($bzrloc2 as $bzr)
     @php
     $counting++
     @endphp
     <tr>
       <th scope="row">{{$counting}}</th>
       <td>{{$bzr->name}}</td>
       <td>{{$bzr->totalPlot}}</td>
       <td>{{$bzr->plotAvail}}</td>
       <td><a href="{{ route('bazaarLocation.edit', $bzr->bzrloc_id) }}"><button type="submit" class="btn btn-success btn-sm">Edit</button></a></td>
       <td>
         <form method="POST" action="{{ route('bazaarLocation.destroy', $bzr->bzrloc_id) }}">
             @csrf
             @method('DELETE')
             <button type="submit" class="btn btn-danger btn-sm" onclick="return confirm('Adakah anda pasti ingin membatalkan lokasi tersebut?')">Batal</button>
         </form>
       </td>
     </tr>
     @endforeach
     @if(empty($bzrloc2))
     <tr>
       <td colspan="2">
         No record found
       </td>
     </tr>
     @endif
   </tbody>
 </table>

Podczas drukowania $ bzrloc2 wyświetla []. Co potwierdza, że tablica jest pusta. Opierając się na podręczniku php, funkcja empty () powinna traktować to jako puste i zwracać prawdę.

1
Reshinaath Arumugam 18 marzec 2020, 07:20

2 odpowiedzi

Najlepsza odpowiedź

Ponieważ używasz kolekcji, a nie tablicy. Kolekcja zwróci false:

empty(collect([]))  // false
empty([])           // true

Wypróbuj następujący kod:

<table class="table table-hover">
    <caption>Table 2</caption>
    <thead class="thead-dark">
        <tr>
            <th scope="col" style="width: 8%; vertical-align: top;">No.</th>
            <th scope="col" style="width: 60%; vertical-align: top;">Location</th>
            <th scope="col" style="width: 21%; vertical-align: top;">Amount Approved</th>
            <th scope="col" style="width: 21%; vertical-align: top;">Description</th>
            <th scope="col" style="width: 4%;"></th>
            <th scope="col" style="width: 4%;"></th>
        </tr>
    </thead>
    <tbody>
        @if($bzrloc2->count())
            @php
            $counting = 0
            @endphp
            @foreach($bzrloc2 as $bzr)
            @php
            $counting++
            @endphp
            <tr>
                <th scope="row">{{$counting}}</th>
                <td>{{$bzr->name}}</td>
                <td>{{$bzr->totalPlot}}</td>
                <td>{{$bzr->plotAvail}}</td>
                <td><a href="{{ route('bazaarLocation.edit', $bzr->bzrloc_id) }}"><button type="submit" class="btn btn-success btn-sm">Edit</button></a></td>
                <td>
                    <form method="POST" action="{{ route('bazaarLocation.destroy', $bzr->bzrloc_id) }}">
                        @csrf
                        @method('DELETE')
                        <button type="submit" class="btn btn-danger btn-sm" onclick="return confirm('Adakah anda pasti ingin membatalkan lokasi tersebut?')">Batal</button>
                    </form>
                </td>
            </tr>
            @endforeach
        @else
        <tr>
            <td colspan="2">
                No record found
            </td>
        </tr>
        @endif
    </tbody>
</table>
3
Wahyu Kristianto 18 marzec 2020, 04:32

Kiedy pobierasz za pomocą ->get(), powinieneś użyć funkcji count(), aby sprawdzić, czy kolekcja jest pusta, czy nie.

Zamiast używać pustego, spróbuj użyć licznika, takiego jak:

@if($bzrloc2->count() < 1)
     <tr>
       <td colspan="2">
         No record found
       </td>
     </tr>
     @endif
0
Lizesh Shakya 18 marzec 2020, 04:24