2017-04-02 2 views
0

Ich versuche, eine Attributfunktion in einem Modell zu erstellen, die ein String-Ergebnis zurückgibt, aber ich möchte das Format der Zeichenfolge ändern.String Format Get Attribut Funktion

Eigentlich habe ich eine Reihe Lizenz (varchar Spalte), die wie 17923457 angezeigt wird, und ich möchte das Format 17-92-3457 ändern.

Meine Funktion Attribut tatsächlich ist wie:

public function getNumberAttribute() { 

return $this->num_licence ; 

} 

Jemand weiß, wie ich das spezifische Format anzeigen kann? Vielen Dank im Voraus

+0

ist dieses '17-92-3457' Format festes Format ist? – hassan

+0

'GetNumberAttribute' ist nur ein Getter? – hassan

+0

Ja ist es! Das Format wird immer gleich sein und die Länge der Zahlen wird immer das selbe sein wie das Beispiel –

Antwort

3

ein anderer linearer Ansatz vpsprintf

public function getNumberAttribute() { 

    return vsprintf('%d%d-%d%d-%d%d%d%d', str_split($this->num_licence)); 

} 

zum Beispiel mit:

$s = vsprintf('%d%d-%d%d-%d%d%d%d', str_split('17923457')); 

print_r($s); // Outputs 17-92-3457 
+0

es funktioniert! leicht zu fertig !!! Danke dir auch Hassan –

1

, wenn Sie sicher sind, dass Sie immer 8 Ziffern haben gehen, können Sie

public function getNumberAttribute() { 
    $first = substr($this->num_licence, 0, 2); //from position 0, take 2 digits 
    $second = substr($this->num_licence, 2, 2); //from position 2, take 2 
    $third = substr($this->num_licence, 4); //from 4 take the rest. 
    return $first . '-' . $second . '-' . $third; 
} 

Sie es tun. Verwenden Sie substring, um Ihren varchar/string zu teilen. https://www.w3schools.com/php/func_string_substr.asp

+0

das ist genau das, was ich gesucht habe !!!! Vielen Dank Eddy –

+0

Ich habe eine Ausnahme jetzt Undefinierte Eigenschaft: App \ Licencies :: $ num_licence –