Phänomen mit Datentypen

Microhome

Erfahrenes Mitglied
Hallo zusammen,

ich nutze das Laravel Framework für meine Applikationen und erhalte über Auth::user()->id die ID des eingeloggten Users. Nun möchte ich diese weiterverarbeiten, was lokal auch problemlos funktioniert. Auf dem Server wurde allerdings eine leere Variable weiterverarbeitet, was mich dazu veranlasst hat, mir das ganze ein wenig genauer anzuschauen.

Dabei kam heraus, dass meine Variable lokal als integer verarbeitet wird. Auf dem Live-Server hingegen ist es ein String. Habt ihr eine Idee, woran das liegen könnte und ob man dieses Phänomen über die php.ini entsprechend beheben könnte?

Ich weiß, dass ich einer Variablen über (int) explizit den Typen integer zuweisen kann, das ist gar nicht die Frage. Mich würde einfach interessieren, warum ein und die selbe Variable auf unterschiedlichen Systemen einmal ein String und einmal ein Integer ist.



Danke und beste Grüße,
micro
 
Laufen da verschiedene PHP versionen?
Wie wird die variable von Laravel intern behandelt?

Das musst du mal checken.

Vielleicht ist auch die datenbank abweichend. (Ist id ein integer in der DB?)
 
Eine Version läuft lokal auf Windows, die andere auf dem Live-Server unter Ubuntu 12.04. Ich vermute, dass es mit dem Betriebssystem zusammenhängt, denn Laravel liefert die Felder des User Objekts unter Windows korrekt zurück. Unter Linux werden alle Typen als String zurückgegeben. Habe mich diesbezüglich jetzt an das Laravel Forum gewendet.
 
Okay, habe nun nach vielen Stunden herausgefunden, woran es liegt. Ursache für den Unterschied ist der MySQL PDO Treiber. Lokal läuft da mysqlnd, ein alternativer MySQL Treiber für PHP. Dieser scheint die Zuordnung der Datentypen automatisch zu machen, der Standardtreiber macht das nicht.
 
Zurück