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 26.7
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 );
}