Reputation: 5107
I'm trying to insert a value for a date into my datatables instance but I can't quite get the format right.
My controller is pulling in a mysql timestamp called 'created_at':
if( $d->created_at > $deadline){
$d->call_status = 'new';
}
I'm dumping this and it returns the correct data, and currently in my datatables it dumps the correct data, however it's a full timestamp.
So this:
<td class="createdAt">
@if(!is_null($this->created_at))
{{ $this->created_at }}
@endif
</td>
Works but returns 06/12/2018 00:00:00
I just want the date portion. However, when I try this:
<td class="createdAt">
@if(!is_null($this->created_at))
{{ $this->created_at->date->format('Y-m-d') }}
@endif
</td>
It says it can't call format() on a string.
The format line works on my other columns but those are mysql DATE fields, not timestamps.
What would be best practice to get this to properly show the date portion only?
Upvotes: 0
Views: 1178
Reputation: 5105
You can use attribute casting if it is inside Models.
protected $casts = [
'created_at' => 'date:Y-m-d',
];
Alternatively depending on where you use it.
Carbon::parse($this->created_at)->format('Y-m-d');
Upvotes: 3
Reputation: 192
You can use mutators , try this: In your model create
public function getCreatedDateAttribute(){
return date('Y-m-d',strtotime($this->created_at));
}
Upvotes: 2
Reputation: 98
strtotime()
Will convert your string to a timestamp format, so maybe try like this :
{{ date('Y-m-d', strtotime($this->created_at->date)) }}
Upvotes: 1
Reputation: 11042
Try
{{ $this->created_at->format('Y-m-d') }}
You shouldn't need it, but you can update your model if this is still a string:
protected $dates = ['created_at'];
Upvotes: 0