Yoast\WP\Lib
ORM::build_insert_many()
Builds a bulk INSERT query.
Метод класса: ORM{}
Хуков нет.
Возвращает
Строку
. The insert query.
Использование
// protected - в коде основоного (родительского) или дочернего класса $result = $this->build_insert_many( $models, $dirty_column_names );
- $models(массив) (обязательный)
- Array of model instances to be inserted.
- $dirty_column_names(массив) (обязательный)
- Array of dirty fields to be used in INSERT.
Код ORM::build_insert_many() ORM::build insert many Yoast 22.4
protected function build_insert_many( $models, $dirty_column_names ) { $example_model = $models[0]; $total_placeholders = ''; $query = []; $query[] = 'INSERT INTO'; $query[] = $this->quote_identifier( $example_model->orm->table_name ); $field_list = \array_map( [ $this, 'quote_identifier' ], $dirty_column_names ); $query[] = '(' . \implode( ', ', $field_list ) . ')'; $query[] = 'VALUES'; // We assign placeholders per model for dirty fields that have values and NULL for dirty fields that don't. foreach ( $models as $model ) { $placeholder = []; foreach ( $dirty_column_names as $dirty_field ) { $placeholder[] = ( $model->orm->dirty_fields[ $dirty_field ] === null ) ? 'NULL' : '%s'; } $placeholders = \implode( ', ', $placeholder ); $total_placeholders .= "({$placeholders}),"; } $query[] = \rtrim( $total_placeholders, ',' ); return \implode( ' ', $query ); }