Ich versuche, einen Wert in einem Konstruktor von Modellen in Laravel 5.2 abzurufen, zu konvertieren und zu speichern. Der Grund dafür ist, dass es in der Datenbank als hex gespeichert ist, und ich es ziemlich oft in binary konvertieren muss, und möchte es einmal tun und das Ergebnis in einem Klassenattribut speichern. Aber ich kann nicht in der Lage sein, den Wert von $this
im Konstruktor abzurufen.Zugreifen auf einen Datenbankwert in einem Modellkonstruktor in Laravel 5.2
Hier ist ein Auszug von dem, was ich arbeite, Guid ist ein Feld in meiner Tabelle.
class Person extends Model {
private $bGuid = null;
public function __construct(array $attributes = []) {
parent::__construct($attributes);
$this->ad = Adldap::getProvider('default');
$this->bGuid = hex2bin($this->guid);
}
public function getName(){
$query = $this->ad->search()->select('cn')->findBy('objectGUID', $this->bGuid);
return $query['attributes']['cn'][0];
}
}
Das $this->ad
Attribut führt wie erwartet, aber $this->bGuid
nicht. Ein Debugging zeigt, dass $this->guid
, wenn im Konstruktor verwiesen wird, null
zurückgibt. Während wenn in der getName()
Methode direkt direkt funktioniert funktioniert gut.
Meine Zwischenlösung erstellt eine neue Funktion und ruft einfach $this->getbGuid()
, so dass ich ein bisschen mehr zufrieden mit dem DRY-Ness, aber es muss es immer noch jedes Mal konvertieren, wenn es aufgerufen wird.
würde ich es begrüßen, wenn mir jemand sagen könnte, was falsch läuft, so kann ich den Code :)
Danke für die Antwort! Es tut mir leid zu sagen, dass mein Projekt schon lange vorbei ist, aber ich schätze die Informationen. Ich habe die Quelldateien nicht griffbereit, aber es würde auf jeden Fall erklären, warum das Einfügen in den Konstruktor nicht funktioniert hat. (Und Entschuldigung für meine verzögerte Antwort) –
Verdienen mehr Upvotes! Vielen Dank! – user3396065