Search code examples
laraveldatelaravel-9

Laravel how to display day and month only without year from date type?


I would wan to display month and data for payment_date only in a foreach loop in view.blade.php.

  @foreach ($alert as $key=>$data)
          <tr>
             <td>{{ ++$key }}</td>
             <td>{{ $data->tenant_name}}</td>
             <td>{{ $data->property_name}}</td>
             <td>RM {{ $data->amount}}</td>
             <td>{{ $data->payment_date }}</td>
             <td><span class="badge bg-danger">{{ $data->status }}</span></td>                                       
             <td><a href="{{ route('view.email', $data->tenant->id) }}" class="btn icon btn-primary sm"  title="Send Email"> <i class="bi bi-envelope-fill"></i> </a>
             </td>
          </tr>
   @endforeach

enter image description here

Hereby I include the datatype: enter image description here


Solution

  • Short way (not recommended)

    @foreach ($alert as $key=>$data)
        <tr>
            <td>{{ ++$key }}</td>
            <td>{{ $data->tenant_name}}</td>
            <td>{{ $data->property_name}}</td>
            <td>RM {{ $data->amount}}</td>
            <td>{{ \Carbon\Carbon::createFromFormat('Y-m-d', $data->payment_date)->format('m-d') }}</td>
            <td><span class="badge bg-danger">{{ $data->status }}</span></td>                                       
            <td><a href="{{ route('view.email', $data->tenant->id) }}" class="btn icon btn-primary sm"  title="Send Email"> <i class="bi bi-envelope-fill"></i> </a>
            </td>
        </tr>
    @endforeach
    

    Laravel way (Recommended)

    Add cast to the eloquent model class.

    protected $casts = [
        'payment_date' => 'date',
    ]; 
    

    after that you can do this

    @foreach ($alert as $key=>$data)
        <tr>
            <td>{{ ++$key }}</td>
            <td>{{ $data->tenant_name}}</td>
            <td>{{ $data->property_name}}</td>
            <td>RM {{ $data->amount}}</td>
            <td>{{ $data->payment_date->format('m-d') }}</td>
            <td><span class="badge bg-danger">{{ $data->status }}</span></td>                                       
            <td><a href="{{ route('view.email', $data->tenant->id) }}" class="btn icon btn-primary sm"  title="Send Email"> <i class="bi bi-envelope-fill"></i> </a>
            </td>
        </tr>
    @endforeach