データベースとbigint列型があります。私がこの列に値を挿入するたびに、私はいつも間違った番号を持っていました。たとえば、私は値 "198705122006041001"を挿入し、常にこの値 "2147483647"を挿入します。bigintが正しく挿入されない
自分のプロジェクトにlaravelを使用していますが、私が正しく表示されないbigintを表示するために雄弁を使用すると、PDOを手動で使用すると正しく表示されます。
データベースとbigint列型があります。私がこの列に値を挿入するたびに、私はいつも間違った番号を持っていました。たとえば、私は値 "198705122006041001"を挿入し、常にこの値 "2147483647"を挿入します。bigintが正しく挿入されない
自分のプロジェクトにlaravelを使用していますが、私が正しく表示されないbigintを表示するために雄弁を使用すると、PDOを手動で使用すると正しく表示されます。
確かにint
ですが、bigint
ではないので、もう一度確認してください。 2147483647
はmaximum possible value for signed int
PHPにはbigintデータ型がありません。代わりにint.maxを使用します。 bigintsを文字列または浮動小数点として表現する必要があります。フロートは正確ではなく、驚きにつながる可能性があることに注意してください。
MySQLで数学的変換を行い、必要に応じてbigintにキャストすることを忘れないでください。
私の問題は、この列の値を表示するためにEloquentを使用すると、値が何であってもreutrn 2147483647になります。 PDOを手動で使用してデータを取得すると、正しい値が表示されます。だから私はこのBigintを寛容にどのように扱うことができますか? varchar/textまたはstringへの変換はオプションではありません。ありがとう –
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の整数サイズを確認してください。
私の問題は、この列の値を表示するためにEloquentを使用すると、値が何であってもreutrn 2147483647になります。 PDOを手動で使用してデータを取得すると、正しい値が表示されます。 だから私はこのBigintを異言で扱うことができますか? varchar/textまたはstringへの変換はオプションではありません。ありがとう –