2012-04-13 15 views
2

findまたはfetchを返すと、返された値の配列には、列のデータ型に関係なく、すべてのmy列の文字列表現が含まれます。これは、代わりのように返す整数の列の意味:CakePHPの整数列の整数値を取得するにはどうすればよいですか?

array('field1' => 1) 

array('field1' => '1') 

は、CakePHPのために、この予想される動作であるため、彼らは終わりますか?私は何かを間違って構成しましたか?

私のモデルのafterfindメソッドにいくつかのコードを書いて、intvalを適切な列に呼び出すことを考えましたが、それは本当に最適な解決策ですか? CakePHPは非文字列を扱うより良い方法を持っていますか?

+0

なぜ整数値を使用する必要がありますか? – burzum

+0

文字列ではなく、整数を必要とするWebアプリケーションのJSONとしてデータを出力しています。 –

+0

さて、私の答えを見てください。 ;) – burzum

答えて

1

モデルプロパティModel :: _ schemaから、モデルのテーブルのフィールドの種類を調べることができます。それに基づいて、フィールドの値をModel::afterFind()コールバックにキャストしてください。

整数にするフィールドを手動でチェックすることもできますが、_schemaを使用すると自動化することができます。たとえば、これを動作として実行し、この機能が必要なすべてのモデルにアタッチすることができます。

単純に結果を繰り返し、整数にするフィールドをチェックして型変換します。

+0

これは最善の解決策のようです。私はちょうどCakePHPがこれを自動的にしないことに驚いています。 –

+0

これは99%のオーバーヘッドを追加するだけなので、必要ありません。私は、出力するために何かを型打ちしなければならなかった* web *アプリケーションを何年も続けてきたわけではありません。 Btw:私はちょうど良いアイデアを持っていました:javascriptでJSONの結果をキャストします。これは、クライアントのCPUにこの作品を移動します:) – burzum

1

これも気付きました。明らかに、PDOがすべてを文字列に変換した結果です。私はticketを提出し、今後自動的に機能を強制する自動機能があるかもしれません。

クライアントはデータを変換することができますが、特にサードパーティの開発者にAPIを提供している場合はそれほどクリーンではありません。

+0

ええ、その良いチケット。それはおそらく受け入れられるでしょう。 – mark

関連する問題