2014-09-24 99 views
0

在我的CakePHP的应用程序,当我试图得到这样的数据:如何在CakePHP中将整数转换为字符串?

$this->loadModel('Radio'); 
    $posts = $this->Radio->find('all'); 

的整数显示像(调试)字符串:

'Radio' => array(
    'idSong' => '4', 
    'name' => 'batman', 
    'title' => 'Batman Theme Song' 
), 

为什么呢?该类型在数据库中为int。我需要整数正确地显示在我的JSON文件

+0

这不是一个CakePHP的问题本身改变模型数据,但是PHP的PDO类就是这样做的。有一些设置可以防止这种情况的发生:http://www.dereuromark.de/2014/08/05/all-new-cakephp-tips-summer-2014/#mysql-and-returning-integers – mark 2014-09-24 10:44:20

回答

1

不知道如果有一个简单的解决方案,但你可以使用afterfind

喜欢的东西

public function afterFind($results, $primary = false) { 
    foreach ($results as $key => $val) { 
     if (isset($val['Radio']['idSong'])) { 
      $results[$key]['Radio']['idSong'] = (int)$results[$key]['Radio']['idSong']; 
     } 
    } 
    return $results; 
} 
+0

我把你的代码和结果是一样的:http://www.monde-du-rat.fr/API/moulinette/radio/posts(参见debug),在json中也是http://www.monde-du-rat.fr/ API/moulinette/radio/posts.json – JoDiii 2014-09-24 12:52:47

+0

可能会在'afterFind'内添加'var_dump($ results)'并查看记录的外观?我认为afterfind功能是正确的模式,对吧? – cornelb 2014-09-24 12:54:17

+0

是的,我犯了一个错字:p thks! – JoDiii 2014-09-24 13:26:14