2

I am not sure why the desired row stating "No record found" is not displaying despite not having any data matching 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>

When printing out $bzrloc2, it displays []. Which confirms the array is empty. Based on the php manual, the empty() function should consider this empty and return true.

4
  • print to $allbzr and check is data coming from database? Commented Mar 18, 2020 at 4:23
  • Aren't you missing some more @php's? Commented Mar 18, 2020 at 6:51
  • @dagelf nope, its complete Commented Mar 18, 2020 at 10:55
  • @PHPGeek the question is already solved :) Commented Mar 18, 2020 at 10:56

2 Answers 2

3

Because you use collection, not array. Collection will return false :

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

Try following code :

<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>
Sign up to request clarification or add additional context in comments.

Comments

0

When you retrieve using ->get(), you should use count() function in order to check whether the Collection is empty or not.

Instead of using empty, try using count like:

@if($bzrloc2->count() < 1)
     <tr>
       <td colspan="2">
         No record found
       </td>
     </tr>
     @endif

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.