atk4\data\Persistence_SQL::insert PHP Method

insert() public method

Inserts record in database and returns new record ID.
public insert ( Model $m, array $data ) : mixed
$m Model
$data array
return mixed
    public function insert(Model $m, $data)
    {
        $insert = $this->action($m, 'insert');
        $insert->set($this->typecastSaveRow($m, $data));
        $st = null;
        try {
            $m->hook('beforeInsertQuery', [$insert]);
            $st = $insert->execute();
        } catch (\PDOException $e) {
            throw new Exception(['Unable to execute insert query', 'query' => $insert->getDebugQuery(false), 'model' => $m, 'conditions' => $m->conditions], null, $e);
        }
        $m->hook('afterInsertQuery', [$insert, $st]);
        return $insert->connection->lastInsertID();
    }

Usage Example

Beispiel #1
0
 public function testPersistenceDelete()
 {
     $a = ['user' => [1 => ['name' => 'John', 'surname' => 'Smith'], 2 => ['name' => 'Sarah', 'surname' => 'Jones']]];
     $p = new Persistence_SQL('sqlite::memory:');
     $p->connection->expr('drop table if exists user')->execute();
     $p->connection->expr('create table user(id integer primary key autoincrement, name varchar(255), surname varchar(255))')->execute();
     $m = new Model($p, 'user');
     $m->addField('name');
     $m->addField('surname');
     $ids = [];
     foreach ($a['user'] as $id => $row) {
         $ids[] = $p->insert($m, $row);
     }
     $this->assertEquals(false, $m->loaded());
     $m->delete($ids[0]);
     $this->assertEquals(false, $m->loaded());
     $m->load($ids[1]);
     $this->assertEquals('Jones', $m['surname']);
     $m['surname'] = 'Smith';
     $m->save();
     $m->tryLoad($ids[0]);
     $this->assertEquals(false, $m->loaded());
     $m->load($ids[1]);
     $this->assertEquals('Smith', $m['surname']);
 }