Beschreibung: ich ein Spiel erschaffe, wo Sie Ihre Gebäude aktualisieren. Nachdem Sie auf ein Gebäude geklickt haben, wird es durch die upgradeBuilding() -Methode auf eine höhere Ebene gehoben. Der problematischste Teil ist, dass ich ein Gebäude aktualisieren muss, das in $building
variabel sein wird, es ist immer eine Zeichenfolge mit dem Namen des Gebäudes. Ich denke, dass der $currentBuildingLevel->{$building}
den Fehler verursacht. Das zweite Problem ist, dass wenn ich versuche var_dump($currentBuildingLevel)
seine Lade verrückt lange, es ist nicht nur ein einfaches Objekt mit Ebenen der Gebäude ...Laravel5 ORM-Update - undefined Eigentum von Variable
Datenbank: In Datenbank buildings
Tabelle, die Werte wie folgt aussehen:
Gebäudemodell: Hier ist der Code, der eine Gebäudeebene in oben Datensatz aktualisieren soll:
$building = "barracks" // example building
public function upgradeBuilding($building)
{
$currentBuildingLevel = $this->first()->where("user_id", "=", Auth::id());
$currentBuildingLevel->{$building} = $currentBuildingLevel->{$building} + 1;
$currentBuildingLevel->save();
}
Fehler: ich eine Störung erhalte:
Undefined property: Illuminate\Database\Eloquent\Builder::$barracks
Frage: Wie mache ich das richtig? Ist $currentBuildingLevel
bereits ein Objekt eines Modells?
move 'first()' in das Ende der Abfrage '$ this-> where ("user_id", "=", Auth :: id()) -> first(); ' –
@RavishaHesh Vielen Dank für Ihren Rat, macht es einen Unterschied? – divHelper11
yup, '$ this-> first()' gibt Ihnen eine Instanz Ihres Modells, Sie können also 'where()' nicht verwenden, 'where()' Funktion ist Teil von "Illuminate/Database/Eloquent/Builder "Klasse. –