Если вы хотите строго использовать вызов toJSON, то вы будете иметь чтобы выполнить некоторую обработку пост-обработки строки, поскольку единственная опция, разрешенная с помощью метода toJSON, состоит в том, чтобы включать или не включать ленивые столбцы.
$something = new Something();
$something->setSomeColumnValue("value");
$json = $something->toJSON();
$tableMap = \Propel::getDatabaseMap()->getTableMap('Something');
$columnMaps = $tableMap->getColumns();
$phpNames = array();
$columnNames = array();
foreach ($columnMaps as $columnMap) {
$phpNames[] = '"' . $columnMap->getPhpName() . '"';
$columnNames[] = '"' . $columnMap->getColumnName() . '"';
}
$json = str_replace($phpNames, $columnNames, $json);
Одно из предостережений для этого кода заключается в том, что если значение соответствует одному из ваших имен столбцов точно, оно будет заменено. Единственный способ устранить это - это json_decode
объект JSON и только заменить ключи, но если вы не хотите использовать json_encode
, я не думаю, что вы бы хотели использовать json_decode
.
@ Ответ Cezille07 является наиболее правильным в этом случае. Мой ответ в основном заключается в том, чтобы показать, как TableMap/ColumnMaps можно использовать для последующей обработки, чего я не знал о начале работы с Propel.
Спасибо за ответ! Это действительно приводит к правильному выводу. Однако; Он не использует встроенную функцию 'toJSON'. – Cethy