public function createMany(array $data, $allowPk = false, array $options = []) {
        $pk = $this->getPrimaryKey();
        $columns = $this->getSchema()->getColumns();
        $records = [];
        $defaults = [];

        if ($columns) {
            foreach ($columns as $key => $column) {
                $defaults[$key] = array_key_exists('default', $column) ? $column['default'] : '';
            }

            unset($defaults[$pk]);
        }

        foreach ($data as $record) {

            // Convert from an entity
            if ($record instanceof Arrayable) {
                $record = $record->toArray();
            }

            // Merge in defaults
            $record = Hash::merge($defaults, $record);

            // Remove primary key
            if (!$allowPk) {
                unset($record[$pk]);
            }

            // Filter out invalid columns
            if ($columns) {
                $record = array_intersect_key($record, $columns);
            }

            $records[] = $record;
        }

        return $this->query(Query::MULTI_INSERT)->save($records, $options);
    }