function DatabaseInsertTestCase::testInsertSelectFields

Test that the INSERT INTO ... SELECT (fields) ... syntax works.

File

modules/simpletest/tests/database_test.test, line 679

Class

DatabaseInsertTestCase
Test the insert builder.

Code

function testInsertSelectFields() {
    $query = db_select('test_people', 'tp');
    // The query builder will always append expressions after fields.
    // Add the expression first to test that the insert fields are correctly
    // re-ordered.
    $query->addExpression('tp.age', 'age');
    $query->fields('tp', array(
        'name',
        'job',
    ))
        ->condition('tp.name', 'Meredith');
    // The resulting query should be equivalent to:
    // INSERT INTO test (age, name, job)
    // SELECT tp.age AS age, tp.name AS name, tp.job AS job
    // FROM test_people tp
    // WHERE tp.name = 'Meredith'
    db_insert('test')->from($query)
        ->execute();
    $saved_age = db_query('SELECT age FROM {test} WHERE name = :name', array(
        ':name' => 'Meredith',
    ))->fetchField();
    $this->assertIdentical($saved_age, '30', 'Can retrieve after inserting.');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.