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ę.
2 odpowiedzi
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>
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
Podobne pytania
Powiązane pytania
Nowe pytania
php
PHP to szeroko stosowany, wysokopoziomowy, dynamiczny, zorientowany obiektowo i interpretowany język skryptowy przeznaczony głównie do tworzenia stron WWW po stronie serwera. Używane w przypadku pytań dotyczących języka PHP.