Skip to content

Feature: Switch Query Builder insert method to use raw SQL and support multi-row inserts #3

@JasonTheAdams

Description

@JasonTheAdams

Currently the Query Builder user wpdb::insert() under the hood to run the insert. This is lame for a couple reasons:

  1. You can't really do anything particularly complex as we're limited to what that function supports
  2. For example, you can only insert a single row at a time... Have 20 rows to insert? Too bad. Do it 20 times. 😭

Let's just ditch wpdb and build the SQL ourselves. We don't need them! I think as a good first step the following should be possible:

DB::table('post_meta')
	->insert([
		['post_id' => 1, 'meta_key' => 'foo', 'meta_value' => 'bar'],
		['post_id' => 1, 'meta_key' => 'foo2', 'meta_value' => 'bar2'],
		['post_id' => 1, 'meta_key' => 'foo3', 'meta_value' => 'bar3'],
	]);

Currently the insert signature contains a $format parameter. I'm inclined to just drop that and infer from the value type what it should be: strings should be strings, numbers should be numbers, and so forth. Crazy stuff! Dropping the last parameter shouldn't break anything since passing additional parameters in PHP doesn't throw an error.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions