2016-12-07 2 views
2

私はZend Framework 2を使用してアプリケーションを開発しています。私はTableGatewayを使用してクエリを選択、挿入、更新、削除しています。Zend Framework 2で実行する前に正確なSQLクエリを印刷するには

1.私の質問は、INSERT、UPDATE、DELETE文を実行する前に正確なSQLクエリを出力する方法ですか?の場合SELECTここの文は私のために働いています。私はこのコードを使用し、正常に動作しています最後に挿入idに

$selectedTable = new TableGateway($this->tblName, $this->dbAdapter); 
$sql = $selectedTable->getSql(); 
$select = $sql->select(); 

if ($trace) { 
    echo "<br>" . $sql->getSqlstringForSqlObject($select) . "<br>"; 
    exit; 
} 
else { 
    $resultSet = $selectedTable->selectWith($select); 
    unset($selectedTable); 
    return $resultSet; 
} 

2.

$selectedTable = new TableGateway($this->tblName, $this->dbAdapter); 
$selectedTable->insert($dataArray); 
$insertId = $selectedTable->adapter->getDriver()->getConnection()->getLastGeneratedValue(); 
unset($selectedTable); 
return $insertId; 

しかし、最後の更新IDを取得する方法UPDATEため ? DELETEどのように影響を受ける行を取得するには? の更新番号およびの場合、DELETEのためこのコードは機能しません。

誰もこれらの仕事をする方法を提案できますか?

答えて

2

$insertオブジェクトでも同じように違いはありませんが、問題はありません。ここで私はSQLのINSERTを実行し、SQL文字列を取得する方法:

$sql = new Sql($this->dbAdapter); 
$insert = $sql->insert('table'); 
[...] 
$sqlString = $insert->getSqlString($this->dbAdapter->getPlatform()); 

2.あなたが値を挿入すると、あなたが挿入前に生成した値idがどうなるか分からないが、あなただけATERそれを知っているだろう挿入。そのため、挿入された値にはgetLastGeneratedValue-)メソッドがあります。

ただし、値を更新または削除すると、そのidが既に定義されており、その値を読み取ることができます。ですから、データベースからそれを読み取るだけです。あなたのオブジェクトを更新または削除する前に選択を実行すると、必要なすべてのIDを知ることができます。

+0

ご返信ありがとうございます。 TableGatewayを使用してgetaffectedrows()を使用して更新と削除を行う方法を教えてください。 – anil

関連する問題