2015-10-04 2 views
6

私はMySqlデータベースを使用しているので、カラムタイプをdbスキーマのTinyint(1)として定義しました。ブール値を1または0の代わりに真または偽として取得する

私のActiveRecordでは、ブール値バリデータを設定しました。セーブロジックが期待どおりに動作しています。

私はYii2 RESTサービスを呼び出すと、ブール値フィールドをtrueまたはfalse(1または0)に戻します。なぜなら、クライアント側では厳密な比較(===)と1がないからです真実と同じ。

もちろん、コンテンツを送信する前に手動で値を上書きすることも、クライアント側で値を上書きしてモデルに読み込むこともできますが、より洗練されたソリューションに感謝します。

答えて

1

インサイドafterFind iは、trueまたはfalseに0または1の値を変更します:

public function afterFind() { 
    $this->booleanField = ($this->booleanField === 1); 
    parent::afterFind(); 
} 
+0

はい、私はすでに、私はこれを行うためのいくつかの「自動」の道を期待することをやりました。私のモデルではこのフィールドはブール値としてマークされていますが、JSONレスポンス・フォーマッタにそれを知らせる方法はありませんか? – edrian

+0

ほとんどの状況で必要とされるものではないため、自動的に行う方法はないと思います。そうする必要がある場合は、afterFindでその機能を追加することができます。 – marche

+1

ええ、私はあなたが正しいと思います。しかし、少なくとも、私はモデルやコントローラをこのような振る舞いで拡張する方法を望んでいます。あなたはどのように "ブール"バリデーターセットですべてのフィールドを取得するのか知っていますか? – edrian

関連する問題