2015-09-27 1 views
1

У меня есть несколько таблиц с массивами JSON, хранящимися в полях.Как вернуть массив JSON из таблицы sql с помощью PhalconPHP

Использование PHP PDO я могу получить эти данные без проблем с помощью:

$query1 = $database->prepare("SELECT * FROM module_settings 
       WHERE project_token = ? AND module_id = ? ORDER BY id DESC LIMIT 1"); 
$query1->execute(array($page["project_token"], 2)); 
$idx = $query1->fetch(PDO::FETCH_ASSOC); 
$idx["settings"] = json_decode($idx["settings"]); 

Это возвращает строку, как: { "середины": "", "MODULE_ID": "1", "force_reg_enable ":" 1" , "force_reg_page_delay": "2"}

Попытка собрать одни и те же данные через PhalconPHP

$result = Modulesettings::findFirst(array( 
    'conditions' => 'project_token = "' . $token . '"' , 
    'columns' => 'settings' 
)); 

var_dump($result); 

Обеспечивает результат

object(Phalcon\Mvc\Model\Row)#61 (1) { ["settings"]=> string(167) "{"text":"<\/a> 

<\/a> 
","class":""}" } 

Что мне нужно сделать в Phalcon, чтобы вернуть строку, поскольку она хранится в таблице?

спасибо.

+0

'$ result-> settings' бы вернуть настройки столбцов. – honerlawd

ответ

4

У вас есть 2 подхода
Во-первых:
Получить настройки с этой структурой:

$settings = $result->settings; 
var_dump($settings); 

Второе:
Сначала получите массив из resultset, а затем с помощью элемента массива:

$res = $result->toArray(); 
var_dump($res['settings']); 

Попробуйте.

+0

Если это так, он не будет использовать '$ idx [" settings "] = json_decode ($ idx [" settings "]);' в своем примере. – yergo

+0

Да, но @Steven нужно только получить чистый результат, возможно, не нужно получать декодированную строку json. – M2sh

1

Вы можете декодировать JSon прямо в вашей Modulesettings модели декларации:

// handling result 
function afterFetch() { 
    $this->settings = json_decode($this->settings); 
} 

// saving. Can use beforeCreate+beforeSave+beforeUpdate 
// or write a Json filter. 
function beforeValidation() { 
    $this->settings = json_encode($this->settings); 
}