Что лучше при сохранении массива в ячейке БД — json_encode/decode или serialize/unserialize?
Есть задача сохранять несколько картинок к одной сущности, самое очевидное - сохранять массив имен картинок в одну ячейку БД, например images. Что выгоднее здесь использовать json_encode/decode или serialize/unserialize?
На примерах CMS-ок часто вижу что используют json, но при конвертации из json обратно получается не массив, а объект stdClass и приходится потом работать как с объектом и его данными, в то время как unserialize() сразу возвращает обычный массив, что может быть удобнее для дальнейшей работы.
Думал о таком варианте но пока не понимаю как указывать картинке id статьи если одновременно в базу пишется и статья и картинки. То есть на момент записи id статьи еще не известно.
То есть человек заполняет статью и прикрепляет картинку, нажимает Сохранить и в этот момент:
1. В таблице Статьи создается строка с уникальным id
2. Одновременно в таблице Картинки создаются строки с id самих картинок и id статьи к которой картинки принадлежат, вот как этот id получить?
DevMan, в Джумле например очень часто для хранения настроек или картинок в ячейке используется именно json. Хз почему так, наверно чтоб не плодить таблицы которых итак дофига.
Антон Р., извините меня, это тостер, а не гугл. Я мог бы сюда кинуть ссылки по запросу из гугла, но вы их сами без труда найдёте. Если коротко, uuid можно генерировать самому и не надеяться на lastInsertId. Это удобно, когда нужно в момент сохранения сразу связать запись с другой таблицей и/или послать событие в очередь, которое кто-то потом обработает. Это не костыль, это стандарт, такой же, как автоинкремент, но если начинать, то либо с автоинкремента, либо с uuid
Антон Р., потому что больше бредятины, чем получить кошерный lastInsertID, и использовать его где душеньке угодно, мы будем устраивать "UUID головного мозга". Вы на внешний вид UUID посмотрите, а потом на внешний вид автоинкремента, для начала. Остальные выводы очевидны.
UUID нужно использовать там где надо, а не везде подряд, ибо круто.