Fi1osof 08 декабря 2014 0 0
Материал для тех, что знает что такое map-файлы и с чем их едят. Небольшая заметочка.

В мап-файлах описываются колонки таблицы/объекта с указанием типа данных в БД и в PHP (типа как воспринимать на стороне PHP и в каком виде сохранять в БД). И здесь я хотел бы отдельно рассмотреть php-типы array и json.

Если указать php-тип array, то свойству объекта передаем массив, а в БД будет писаться сериализованная строка, типа a:1:{s:6:«sdfsdf»;s:6:«sdfsdf»;}
Вот часть мап-файла:
'entries' => 
    array (
      'dbtype' => 'text',
      'phptype' => 'array',
      'null' => false,
    ),


А вот исполняемый код:
if($o = $modx->newObject('DropboxCursor', array(
    "entries" => array('sdfsdf' => "sdfsdf"),
))){
    $o->save();
}


На мой взгляд здесь самое неприятное это то, что передавать ему можно только массив (Хотя конечно можно задать его напрямую $o->entries = 'a:1:{s:6:«sdfsdf»;s:6:«sdfsdf»;}';, но все равно мне никогда не нравилось работать с сериаллизованными строками.).

А вот если указать phptype json, тогда объекту можно передавать как массив, так и JSON-строку. В БД всегда будет записана JSON-строка. То есть можно и так:
$o->set('entries', array('sdfsdf' => "sdfsdf"));

и так:
$o->set('entries', '{"sdfsdf":"sdfsdf"}');

и так:
$o->entries = '{"sdfsdf":"sdfsdf"}';


По-моему значительный такой плюс :) Можно совсем не заморачиваться с типом данных.
0 комментариев
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.