3

私はこれをします:

$data = array('coords'   => $district->getCoords(),
    'id'       => $district->getId(),
    'fid'      => $district->getFid(),
    'wijziging'=> $district->getWijziging(),
    'nieuwnr'  => $district->getNieuwnr(),
    'naam'     => $district->getNaam(),
    'wijk'     => $district->getWijk(),
    'wijknr'   => $district->getWijknr(),
    'objectid' => $district->getObjectid(),
    'area'     => $district->getArea(),
    'len'      => $district->getLen(),
);


$this->_dbTable->insert($data);

_dbTable->私のテーブル'Districts'への参照。

ここで、データを挿入する前に、まずテーブルをクリアしたいと思います。

これどうやってするの?

4

6 に答える 6

12

本当にテーブルを切り捨てる必要がある場合は、アダプタを入手してみてください

$this->_dbTable->getAdapter()->query('TRUNCATE TABLE '.$this->_dbTable->info(Zend_Db_Table::NAME));
于 2013-01-21T20:03:18.870 に答える
4

試す:

$this->_dbTable->delete("1=1");

あなたの問題の世話をする必要があります。1 = 1はすべてのレコードに一致するため、それらを削除します。私の知る限り、Zend_DbまたはPDOには切り捨てメソッドはありません。

@Rikeshは、よくある質問を確認するために少し時間を取ってください。その後、より良いヘルプが得られます

于 2013-01-21T16:16:44.040 に答える
4

Zend_Db_Table_Abstractを拡張し、以下を追加します。

/**
 * Remove all contents of the table
 * @return this
 */
public function truncate()
{
    $this->getAdapter()->query('TRUNCATE TABLE `' . $this->_name . '`');

    return $this;
}
于 2014-05-12T09:04:37.740 に答える
2

tableGatewayでZendFramework2を使用している場合、プロセスは非常に似ています。

    $query = $this->tableGateway->getAdapter()->query('TRUNCATE TABLE '.$this->tableGateway->getTable());
    $query->execute();
于 2016-06-21T18:06:39.943 に答える
0
<?php

namespace MyNamespace\Db\Sql;

use Zend\Db\Adapter\ParameterContainer;
use Zend\Db\Adapter\Platform\PlatformInterface;
use Zend\Db\Adapter\Driver\DriverInterface;
use Zend\Db\Sql\AbstractPreparableSql;
use Zend\Db\Sql\TableIdentifier;

class Truncate extends AbstractPreparableSql
{
    /**@#+
     * @const string
     */
    const SPECIFICATION_TRUNCATE = 'truncate';
    /**@#-*/

    /**
     * @var string[]
     */
    protected $specifications = [
        self::SPECIFICATION_TRUNCATE => /* @lang SQL */ 'TRUNCATE TABLE %1$s',
    ];

    /**
     * @var string|TableIdentifier
     */
    protected $table = '';

    /**
     * @param null|string|TableIdentifier $table
     */
    public function __construct($table = null)
    {
        if ($table) {
            $this->table($table);
        }
    }

    /**
     * @param  string|TableIdentifier $table
     * @return self
     */
    public function table($table)
    {
        $this->table = $table;
        return $this;
    }

    /**
     * @param  PlatformInterface       $platform
     * @param  DriverInterface|null    $driver
     * @param  ParameterContainer|null $parameterContainer
     * @return string
     */
    protected function processTruncate(PlatformInterface $platform, DriverInterface $driver = null, ParameterContainer $parameterContainer = null)
    {
        return sprintf(
            $this->specifications[static::SPECIFICATION_TRUNCATE],
            $this->resolveTable($this->table, $platform, $driver, $parameterContainer)
        );
    }
}

$truncate = new Truncate('table');
return $this->getSql()->prepareStatementForSqlObject($truncate)->execute();
于 2016-12-13T09:35:25.177 に答える
0

tableGatewayを備えたZendFramework2/3の場合:

    $adapter = $this->tableGateway->getAdapter();
    $sql = 'TRUNCATE TABLE '.$this->tableGateway->getTable();
 //Or, 
    $sql = 'DELETE FROM '.$this->tableGateway->getTable();

    $adapter->query($sql)->execute();
 // Or, 
    $adapter->createStatement($sql)->execute();
于 2020-01-23T07:08:36.807 に答える