2016-06-22 16 views
4

Zuerst habe ich alle Datensätze abzurufen,Carbon.php Das Symbol Trennung konnte nicht gefunden werden Daten fehlen

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

und dann habe ich Schleife auf den abgerufenen Aufzeichnungen und die created_at ändern und updated_at Daten, die sie menschlicher zu machen lesbares Datum

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)); 
} 

aber es gibt mir diese Fehlermeldung,

InvalidArgumentException in Carbon.php Linie 425: Unerwartete Daten gefunden. Unerwartete Daten gefunden. Das Symbol Trennung kann nicht Daten

irgendwelche Ideen, Hilfe, Hinweise, Anregungen, Empfehlungen bitte fehlen zu finden?

hier ist mein Modell

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'); 
    } 
} 

und Klinge, kann ich nur

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

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

verwenden und es gut funktionieren.

+0

Haben Sie mit Ihrem 'Inventory'-Modell etwas Besonderes gemacht, damit es Datumseigenschaften mit Carbon verarbeitet? – mopo922

+0

@ mopo922: nein ich habe nicht sir –

+0

Gibt es mehr Code, den du nicht zeigst, wo du Carbon für etwas verwendest? – mopo922

Antwort

1

Ich denke, du gehst hier in die falsche Richtung. Die Daten in Ihrer Datenbank müssen nicht mehr menschlich lesbar sein, nur das Display, dass ein Mensch tatsächlich interacts mit.

Um dies zu lösen, werden wir eine benutzerdefinierte accessor Methode erstellen, die für alle Anrufe für die created_at. You can recreate this for the updated_at` gelten wird.

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

Dann, wenn Sie $model->created_at Ihr Attribut aufrufen wird in diesem Format zurück.

Wenn aus irgendeinem Grunde Sie unbedingt das Datum in diesem Format gespeichert muß, dann müssen Sie ein Attribut zu Ihrem Modell hinzufügen, um es zu sagen, dass die timestamp Spalten sollen nach einem bestimmten Typ formatiert werden, wie zum Beispiel:

protected $dateFormat = 'M d, Y'; 

Nebenbei bemerkt

der Grund, dass Carbon beteiligt ist, ist, dass es auf alle Spalten von $table->timestamps() erzeugt angelegt wird, so dass die created_at und updated_at Spalten. Wenn Sie außerdem dem Array protected $dates = [] weitere Spalten im Modell hinzufügen, werden diese automatisch von Carbon verarbeitet.

+0

Ich habe hinzugefügt "public function getCreatedAtAttribute ($ timestamp) { \t return $ timestamp-> Format ('M d, Y'); \t}", aber es gibt mir eine Fehlermeldung „Anruf zu einem Mitgliedsfunktionsformat() auf einem Nicht-Objekt "und auf die Zeile 20 zeigend, die das" return $ timestamp-> -Format ('M d, Y') ist; " irgendwelche Ideen? –

+1

@CodeDemon Das stimmt, Rückgabe 'Carbon :: Parse ($ timestamp) -> Format ('M d, Y')' – Ohgodwhy

+0

Ich habe keine Carbon in meiner Laravel 5.2 App installiert und möchte diese Erweiterung nicht installieren Aber in diesem Moment, jede Alternative ohne Kohlenstoff zu beteiligen? –

Verwandte Themen