0

我正在尝试拆分一些 JSON 字符串以便被这个RestKit的 iPhone 库解析,但是 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 上的设置方式是'Question' belongs to 'Player'后者hasMany 'Question'

我正在寻找告诉 Cake 输出类似于上面的响应 #2 的正确方法。有什么建议么?

4

2 回答 2

0

您可以使用afterFind()Question 模型的回调将 Player 记录嵌套在 Question 记录中。或者获取后根据需要修改结果数组。Hash类的各种功能可能会帮助您重新格式化数组。

于 2013-02-03T08:05:59.517 回答
0

您可以向 Question 模型添加自定义方法,以所需格式返回结果。这将使您的代码保持干净,并在您的模型中保留数据处理/格式化逻辑(在大多数情况下应该在该位置);

例如,在您的 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 回答