2017-03-31 16 views
1

私は最近、さまざまな理由で私のサーバを新しいバージョンのMySQLとPHP 7にアップデートしました。前回のPHP 5.5の実行時に、Laravelのresponse()->json()は常にtinyintを文字列に変換しました。新しいサーバーソフトウェアを実行していると、intが返されます。...Laravel JSONでintに文字列を強制するには?

多くのコードベースをキャストタイプに変更するか、手動で文字列に変換する必要があります現時点では避けようとしています。

何とか強制的にresponse()->json()を返す方法はありますかintstringとしますか?

+1

PHPでは型が非常に緩いので、 '==='を使用している場合を除いて、int型でも文字列として使用できます。 –

+1

あなたは私が恐れている質問を理解していません –

+1

私は本当にLaravelを知りませんが、ネイティブ 'json()'関数をオーバーライドして 'settype()'を使用することは可能でしょうか?これにより、すべての関数呼び出しを変更する必要がなくなります。 – roberto06

答えて

2

何とか応答()を強制する方法がある - > JSONは()文字列の

としてint型のを返すために、私は、コードベースを変更したくない - キャストする必要はありませんタイプ、変換、

いいえ、そのオプションはありません。必要に応じて自分でやる必要があります。

+0

... 、多分/うまくいけば? :( – omerowitz

+2

いいえ、スイッチはありません。意味がありません。あなたがその行動を必要としているかわからない –

+0

私はExpireiencingしているアプリはAPIであり、SwiftとJavaが厳密に型付けされているわけではないので、すべてを文字列として扱うモバイル(iOS/Android) langies、これは両方でクラッシュを引き起こしています... – omerowitz

-1

あなたは文字列に型キャストすることができます

リターン対応 - > JSON([ "データ" =>(文字列)1]);

+0

を行うための回避策がある - 私はコードベースを変更したくない - など、それを変換し、タイプをキャストする必要はありませんが、いくつかのMySQL/PHPの再構成とたぶん – omerowitz

0

モデルにlaravel

に文字列に整数をキャストする方法は、あなたが文字列にIDをキャストすることができますがあります。次のようになります。

protected $casts = [ 'id' => 'string' ]; 

しかし、欠点は、すべてのモデルでそうしなければならないことです。

0

多くのコードを変更したくない場合は、迅速で汚れた機能で応答データを実行できます。ディレクトリをJSONに移動する代わりに、ネストされた配列としてデータを取得する必要があります。

この関数は、整数を文字列に変換し、ネストされた配列を処理するために再帰を使用します。そこから出力を取り出し、それをJSONに変換します。あなたが複数の関係を持つ複雑な応答が含まれていたときに私のために

+0

私はあなたと同じような非常に似た再帰関数を書いています...しかし、私は今のところそれを避けるでしょう。とにかくありがとう。 – omerowitz

関連する問題