2

findまたはを実行するfetchと、返される値の配列には、列のデータ型に関係なく、すべての列の文字列表現が含まれます。これは、整数列の代わりに次のように返されることを意味します。

array( 'field1' => 1 )

彼らは最終的に

array( 'field1' => '1' )

これはCakePHPで期待される動作ですか?何かを誤って構成しましたか?

afterfindモデルのメソッドに適切な列を呼び出すコードを書くことを考えましintvalたが、それが本当に最善の解決策ですか?CakePHPには、文字列以外の列を処理するためのより良い方法がありますか?

4

2 に答える 2

1

モデルプロパティModel::_ schemaから、モデルがテーブル内のフィールドの種類を把握できます。これに基づいて、Model :: afterFind()コールバックでフィールドの値を型キャストできます。

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

したがって、結果を繰り返し処理し、整数にするフィールドを確認して、型キャストします。

于 2012-04-13T00:38:28.157 に答える
1

私もこれに気づきました、そして明らかにそれはPDOがすべてを文字列にキャストした結果です。私はチケットを提出しましたが、将来的には強制機能への自動機能があるかもしれません。

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

于 2012-06-15T05:54:59.303 に答える