les joueurs:8 octets Entier avec Doctrine et PHP
- linux 64 bits avec
- php 5 (ZendFramework 1.10.2)
- PostgreSQL 8.3
- Doctrine 1,2
Via un client Flash/Flex j'ai une valeur entière de 8 octets.
le champ dans la base de données est un BIGINT (8 octets)
PHP_INT_SIZE montre que le système prend en charge 8 octets entier.
l'impression de la valeur dans le code tel qu'il est et comme intval() conduit à ceci:
Plain: 1269452776100
intval: 1269452776099
échec arrondi flottant?
mais ce qui m'a vraiment conduite des noix est
ERROR: invalid input syntax for integer: "1269452776099.000000"'
lorsque je tente de l'utiliser dans une requête. comme:
Doctrine_Core::getTable('table')->findBy('external_id',$external_id);
ou
Doctrine_Core::getTable('table')->findBy('external_id',intval($external_id));
Comment je suis censé gérer cela? ou comment puis-je donner à la doctrine un nombre à virgule flottante qu'elle devrait utiliser sur un champ bigint?
Toute aide est très appréciée!
TIA
EDIT:
du modèle:
$this->hasColumn('external_id', 'integer', 8, array(
'type' => 'integer',
'length' => 8,
'fixed' => false,
'unsigned' => false,
'notnull' => false,
'primary' => false,
));
champ de base de données est BIGINT 8 octets.
EDIT2: http://bugs.php.net/bug.php?id=48924 semble être la racine du problème
Avez-vous construit le modèle rou de la DB, à partir d'un schéma YAML, ou est-ce vous le créez manuellement? Il semble qu'il y ait une différence entre votre définition de modèle de la colonne et son type réel. – prodigitalson
yaml est construit à partir de DB, les modèles sont construits à partir de yaml. la définition du modèle et la base de données sont correctes. – Rufinus
PostgreSQL 7.3? Êtes-vous sûr? Envoyez-le à un musée, c'est là qu'il appartient. Pas de support, pas de mise à jour, pas de sécurité. Ou voulez-vous dire la version 8.3? –