Carbon.php Imansible trovare il simbolo di separazione Dati mancanti

Innanzitutto, recupero tutti i record,

//get inventory items $inv = inventory::all(); 

quindi eseguo il loop dei record recuperati e modifica i dati created_at e updated_at per renderlo più leggibile.

 foreach($inv as $i){ $i->created_at = date("M d, Y",strtotime($i->created_at)); $i->updated_at = date("M d, Y",strtotime($i->updated_at)); } 

ma mi restituisce questo errore,

InvalidArgumentException in Carbon.php row 425: Rilevati dati imprevisti. Dati inaspettati trovati. Non è stato ansible trovare il simbolo di separazione Dati mancanti

qualche idea, aiuto, indizi, suggerimenti, raccomandazioni per favore?

ecco la mia modella

 namespace App; use Illuminate\Database\Eloquent\Model; class inventory extends Model { protected $table = "inventory"; protected $primaryKey = "item_id"; public $incrementing = false; public function profile(){ return $this->belongsTo('App\profile','username'); } public function inventory_images(){ return $this->hasMany('App\inventory_images','item_id'); } } 

e nella lama, posso solo usare

 {{ date("M d, Y",strtotime($i->created_at)) }} {{ date("M d, Y",strtotime($i->updated_at)) }} 

e funziona bene.

Penso che tu stia andando in questo modo nel modo sbagliato. I dati nel tuo database non devono essere più leggibili , solo il display con cui un essere umano interacts .

Per risolvere questo, creeremo un metodo di accessor personalizzato che verrà applicato a tutte le chiamate per created_at. You can recreate this for the created_at. You can recreate this for the updated_at`.

 public function getCreatedAtAttribute($timestamp) { return $timestamp->format('M d, Y'); } 

Quindi quando chiami $model->created_at tuo attributo tornerà in quel formato.

Se per qualche motivo hai assolutamente bisogno della data memorizzata in quel formato, devi aggiungere un attributo al tuo model dicendo che le colonne di timestamp dovrebbero essere formattate in base a un tipo specifico, come ad esempio:

 protected $dateFormat = 'M d, Y'; 

Nota a margine

Il motivo per cui Carbon è coinvolto è che è applicato a tutte le colonne generate da $table->timestamps() , quindi le colonne created_at e updated_at . Inoltre, se si aggiungono più colonne nel model all'arrays protected $dates = [] , anche queste verranno automaticamente gestite da Carbon.