2016-10-01 5 views
0

Ist es möglich, von einem Controller oder Befehl auf die Methode getDateFormat() zuzugreifen?Zugriff auf getDateFormat() vom Controller aus - Laravel

Ich kann es verwenden, um meine Modelle wie folgt aus:

public function getCreatedAtAttribute($value) 
    { 
     $format = $this->getDateFormat(); 
     return Carbon::createFromFormat($format, $value, 'UTC')->setTimezone(\Helper::getTimezone()); 
    } 

aber wenn es in meinem Controller oder Befehl, wie diese $format = getDateFormat();, bekomme ich folgende Fehlermeldung:

local.ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Call to undefined function App\Console\Commands\getDateFormat()'

Antwort

0

Natürlich können Sie nicht - denn es ist eine geschützte Methode der Modellklasse.

/** 
* Get the format for database stored dates. 
* 
* @return string 
*/ 
protected function getDateFormat() 
{ 
    return $this->dateFormat ?: $this->getConnection()->getQueryGrammar()->getDateFormat(); 
} 

Und es ist einfach

/** 
* Get the format for database stored dates. 
* 
* @return string 
*/ 
public function getDateFormat() 
{ 
    return 'Y-m-d H:i:s'; 
} 

Carbon-Instanz verwendet dieses Format als Standard standardmäßig so, wenn Sie Carbon-Datum müssen bekommen - einfach nur Carbon::parse($value) verwenden - es wird sicher diese Art von Format erkennen. Und standardmäßig (string)Carbon::parse($value) tun Sie Datum in diesem Standardformat Ursache erhalten:

/** 
* Format to use for __toString method when type juggling occurs. 
* 
* @var string 
*/ 
protected static $toStringFormat = self::DEFAULT_TO_STRING_FORMAT; 

/** 
* Format the instance as a string using the set format 
* 
* @return string 
*/ 
public function __toString() 
{ 
    return $this->format(static::$toStringFormat); 
} 

Auch Carbon-Dokumentation überprüfen - es gibt eine Menge von Modifikatoren wie ->toDateString() sind, ->toDateTimeString()

+0

Super, danke @ Silwerclaw – user3489502

0

getDateFormat() ist nicht eine native Funktion in PHP, wenn ich erinnere mich an seine Verwendung in Drupal

so ..

wenn in Ihrem $ Wert haben Sie einen Zeitstempel Sie getDate() dies ein Array mit Minute seconde können zurückkehren ...

oder wenn Ihr Wert ist nicht zeitzustempeln Sie dateTime() mit Format wie

public function getCreatedAtAttribute($value) 
    { 
     $date = new DateTime($value); 
     $date->format('Y-m-d H:i:s'); 
     return $date; 

    } 
verwenden können

Ich hoffe, das hilft Ihnen guten Tag

+0

GetDateFormat() verfügbar ist, ist Laravel, wie ich sagte, ich kann es meine Modelle verwenden, aber nicht in meinen Controllern. Nicht sicher, warum – user3489502

Verwandte Themen