0

このRestKitのiPhoneライブラリで解析するためにいくつかのJSON文字列を分割しようとしていますが、CakePHPは互換性のない文字列を分割しています。たとえば、以下の文字列は現在分割されているものです。

1. {"Question":{"id":"1","content":"Test","player_id":"1","points":"0","votes":"0","created":"0000-00-00 00:00:00"},"Player":{"id":"1","username":"player_test"}}

私は次のようなものが必要です:

2. {"Question":{"id":"1","content":"Test","player_id":"1","points":"0","votes":"0","created":"0000-00-00 00:00:00","Player":{"id":"1","username":"player_test"}}}

プレーヤーの回答は質問の一部である必要があることに注意してください。

Cakeでモデルを設定する方法は、Cakeでの設定方法です'Question' belongs to 'Player'hasMany 'Question'

上記の応答#2のようなものを出力するようにCakeに指示する適切な方法を探しています。助言がありますか?

4

2 に答える 2

0

必要な形式で結果を返すカスタム メソッドを Question モデルに追加できます。これにより、コードがクリーンに保たれ、モデル内のデータ処理/フォーマット ロジックが保持されます (ほとんどの場合はそうあるべき場所)。

たとえば、質問モデル内では次のようになります。

public function getQuestionsForPlayer($playerId)
{
    $results = $this->find('all', array(
        'fields' => array(/* fields */),
        'conditions' => array(/* ..... */
        /* etc */
    ));

    // Process your result to be in the right format
    // Hash::extract() and other Hash:: methods
    // may be helpful here as @ADmad mentioned

    return $processedResult;
}

ADmad が述べたように、Hash ユーティリティが役立つ場合があります。ドキュメントは次の場所にあります。

http://book.cakephp.org/2.0/en/core-utility-libraries/hash.html

于 2013-02-03T11:03:50.763 に答える
0

Question モデルのコールバックを使用afterFind()して、Player レコードを Question レコード内にネストできます。または、フェッチ後に必要に応じて結果配列を変更します。Hashクラスのさまざまな機能は、配列の再フォーマットに役立つ場合があります。

于 2013-02-03T08:05:59.517 に答える