Использование объекта в качестве определения таблицы базы данных?

Мне нужно сохранить объект, который я получаю из API, в свою собственную базу данных. Единственная проблема в том, что объект имеет около... 400 разных полей? Я действительно не хочу вводить их определения весь день, поэтому есть ли способ взять объект и превратить каждый ключ в столбец таблицы, а затем вставить значения как вставку?


person CMOS    schedule 02.01.2016    source источник
comment
Если вы хотите настроить схему базы данных в соответствии с полями объекта, вы можете использовать для этого ORM, например Doctrine.   -  person Patrick Lee    schedule 02.01.2016


Ответы (1)


Предполагая, что объект представляет собой одномерный ассоциативный массив, это должно работать:

// Create a string like field1, field2, field3, ...
$column_list = implode(',', array_columns($object));
// Create placeholder string like :field1, :field2, :field3, ...
$placeholders = implode(',', array_map(function($col) {
    return ":$col";
}, array_columns($object)));
// Put them into the SQL query
$sql = "INSERT INTO tablename ($column_list) VALUES ($placeholders)";
$statement = $pdo->prepare($sql);
// The object will then be used to supply values for the placeholders
$statement->execute($object);
person Barmar    schedule 02.01.2016