Frage

Ich mache ein Update zu meinem Framework. Früher verwende ich ZF1 Zend DB Select for My Data Access Object Class. Jetzt möchte ich eine Verschiebung und ein Upgrade auf ZF2 vornehmen. Ich habe Probleme beim Übersetzen für die Einfügung, Aktualisierung, Auswahl und Löschen von Abfragen und frage mich, ob jemand etwas Licht werfen kann, um mir zu helfen.

  • Was sind die neuen Klassen, die ich verwenden sollte?
  • Bietet es eine Menge Neukodierung?
  • Alle Referenzen werden viel helfen (schauten durch Stackoverflow, aber Haven fand einen umfassenden Leitfaden)

Unten finden Sie meinen Code zum Einfügen/Update/Löschen/Select for ZF1

Einfügung

$userdata = array('email' => $email,
    'name' => $name,
    'gender' => $gender,
    'location' => $location,
    'fbid' => $fbid,
    'ipaddress' => $ipaddress,
    'jointimestamp'=>new Zend_Db_Expr('NOW()'));      
$this->dbo->insert('users', $userdata);
return $this->dbo->lastInsertId();

Auswählen

if($this->dbo->fetchOne('SELECT id FROM users WHERE username = ?',$username)){
    return true;
}else{
    return false;
}

Aktualisieren

$userdata = array($field => $value);
$this->dbo->update('user', $userdata, $this->dbo->quoteInto('useremail = ?', $this->user));

Hat ZF2 auch Fetchall, Fetchone, Fetchrow -Methoden usw.?

Schätzen Sie alle Ratschläge.

War es hilfreich?

Lösung

Nach dem Lesen der Dokumentation habe ich die Abfragen "Einfügen/Auswählen/Aktualisieren für ZF2 veröffentlicht. Im Folgenden finden Sie den Code -Snippet für diejenigen, die es möglicherweise in Zukunft benötigen. Ich verwende Zend db select als eigenständige Klassen für mein benutzerdefiniertes MVC -Framework.

Adapter

$adapter = new Zend\Db\Adapter\Adapter(array(
            'driver'   => 'pdo_mysql',
            'host' => DB_HOST,
            'database' => DB_PREFIX.DB_NAME,
            'username' => DB_USER,
            'password' => DB_PW
));

Auswählen

$select = $this->sql->select()
            ->from('table')
            ->join('users', 'users.id = table.userid')
            ->order("table.createdtimestamp DESC");
$statement = $this->sql->prepareStatementForSqlObject($select);
$result =  $statement->execute();
$resultSet = new ResultSet();
$resultSet->initialize($result);
return $resultSet->toArray();

Einfügung

$insert = $this->sql->insert()
        ->into("messages");
$userdata = array(
         'message' => $message,
         'createdtimestamp'=>new Zend\Db\Sql\Expression('NOW()'),
         'userid' => $userid);    
$insert->values($userdata );    
$statement = $this->sql->prepareStatementForSqlObject($insert);
$result =  $statement->execute();
//return last insert id
return $this->dbo->getDriver()->getLastGeneratedValue();

Aktualisieren

$update = $this->sql->update()
        ->table('posts')
        ->where(array('pid'=>$pid));
$numbercountarr = array('numbercount' =>  new Zend\Db\Sql\Expression('numbercount+ 1'));
$update->set($numbercountarr );
$statement = $this->sql->prepareStatementForSqlObject($update);
result =  $statement->execute();

Reihen zählen

$statement = $this->sql->prepareStatementForSqlObject($query);
$result =  $statement->execute();
return $result->count();

Ich hoffe, dies kann denjenigen helfen, die es brauchen, um es etwas Zeit zu sparen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top