2016-12-16 11 views
1

データベースとbigint列型があります。私がこの列に値を挿入するたびに、私はいつも間違った番号を持っていました。たとえば、私は値 "198705122006041001"を挿入し、常にこの値 "2147483647"を挿入します。bigintが正しく挿入されない

自分のプロジェクトにlaravelを使用していますが、私が正しく表示されないbigintを表示するために雄弁を使用すると、PDOを手動で使用すると正しく表示されます。

答えて

2

確かにintですが、bigintではないので、もう一度確認してください。 2147483647maximum possible value for signed int

+0

私の問題は、この列の値を表示するためにEloquentを使用すると、値が何であってもreutrn 2147483647になります。 PDOを手動で使用してデータを取得すると、正しい値が表示されます。 だから私はこのBigintを異言で扱うことができますか? varchar/textまたはstringへの変換はオプションではありません。ありがとう –

2

PHPにはbigintデータ型がありません。代わりにint.maxを使用します。 bigintsを文字列または浮動小数点として表現する必要があります。フロートは正確ではなく、驚きにつながる可能性があることに注意してください。

MySQLで数学的変換を行い、必要に応じてbigintにキャストすることを忘れないでください。

+0

私の問題は、この列の値を表示するためにEloquentを使用すると、値が何であってもreutrn 2147483647になります。 PDOを手動で使用してデータを取得すると、正しい値が表示されます。だから私はこのBigintを寛容にどのように扱うことができますか? varchar/textまたはstringへの変換はオプションではありません。ありがとう –

1

https://laracasts.com/discuss/channels/eloquent/fbid-bigint-with-model-and-eloquentを参照してください。 Laravelのユーザーは同じ問題を抱えており、最終的に結果を文字列にキャストしなければなりませんでした。

XAMPPはPHP整数のサイズを制限する32ビットのPHPバイナリのみを提供しているというユーザーのコメントもあります。

<?php 

echo "Integer size can be determined using the constant PHP_INT_SIZE=" 
    . (PHP_INT_SIZE * 8) 
    . " bits, maximum value using the constant PHP_INT_MAX=" 
    . PHP_INT_MAX; 

http://php.net/manual/en/language.types.integer.php

を参照してくださいhttps://laravel.com/docs/5.3/homesteadをインストールし、64ビットのPHPバイナリを取得:

は、このコードを使用してPHPの整数サイズを確認してください。

関連する問題