2016-09-25 1 views
0

Ich habe meine eigenen Zeitstempel (neben updated_at & created_at) in der Datenbank erstellt und füllte sie mit Seeder. Beispieldaten wie folgt aussieht:Hinzufügen von Carbon in Modell für benutzerdefinierte Zeitstempel

| id |user|start_at (my timetable)| | created_at  | updated_at 
| 194 | 47 | 2015-01-21 00:00:00 | | 2016-09-25 16:48:48 | 2016-09-25 16:48:48 | 

auch ich in meinem Modell hinzugefügt:

public function getCreatedAtAttribute($date) 
{ 
    return Carbon::createFromFormat('Y-m-d H:i:s', $date); 
} 

public function getUpdatedAtAttribute($date) 
{ 
    return Carbon::createFromFormat('Y-m-d H:i:s', $date); 
} 

public function getStartAtAttribute($date) 
{ 
    return Carbon::createFromFormat('Y-m-d H:i:s', $date); 
} 

Jetzt versuche ich in meinem Controller:

$val->updated_at->diffForHumans(); // works 
$val->created_at->format('d M Y'); // works 

$val->start_at->format('d M Y'); // doesn't work 

Als ich var_dump:

start_at: 
public 'date' => string '2016-10-12 00:00:00.000000' (length=26) 
public 'timezone_type' => int 3 
public 'timezone' => string 'UTC' (length=3) 

created_at: 
    +"date": "2016-09-25 16:48:48.000000" 
    +"timezone_type": 3 
    +"timezone": "UTC" 

Update: Jetzt habe ich protected $dates = ['start_at']

dd($val->start_at); // gives '2014-08-03 00:00:00' 
dd($val->start_at->format('d M Y') // fails 

Fehler:

Unexpected data found. The separation symbol could not be found Data missing

+0

Es sollte so funktionieren. Könnten Sie die Get-Attribut-Funktionen aus Ihrem Modal entfernen? Diese sind in diesem Fall nicht erforderlich. Es genügt, die Eigenschaft $ dates zu verwenden. Vielleicht führt die Verwendung der getAttribute-Funktionen dazu, dass Laravel diese Umwandlung verdoppelt, wodurch möglicherweise ein Fehler zurückgegeben wird. –

Antwort

1

hinzufügen start_at bis $ Daten Ihres Modells zuzuschreiben. Sie müssen weder für die Attribute created_at noch für updated_at benutzerdefinierte Setter oder Getter schreiben.

protected $dates = [ 
     'start_at', 
    ]; 
+0

Bitte überprüfen Sie das aktualisierte Bit meiner Frage – senty

0

Erwähnte Start_at als Kohlenstoff inastamce.

In Ihrem Modell hinzufügen Code folgende

protected $dates = [ 
     'start_at ', 
    ]; 

Hoffnung, das wird funktionieren.

+0

Nun begann ich zu bekommen: 'Unerwartete Daten gefunden. Das Trennzeichen konnte nicht gefunden werden Daten fehlen 'dd ($ var-> start_at); – senty

Verwandte Themen