4

ここで小さな何かが欠けている瞬間があるように感じます。Dotrine DBAL 2.2.x / 2.3.xinsert()のコンポーネントでメソッドを使用すると問題が発生します。QueryBuilder

私はいくつかの調査を行いました.DBALドキュメントのQueryBuilderページのスニペットは次のとおりです

\Doctrine\DBAL\Query\QueryBuilder は、SELECT、INSERT、UPDATE、および DELETE クエリの構築をサポートしています。作成するクエリの種類は、使用するメソッドによって異なります。

簡単にできるコード例をさらに説明します。

$builder = $connection->createQueryBuilder();
$result = $builder
    ->insert('table_name')
    // ...

挿入モードでクエリ ビルダーを使用するには。私がそうするときを除いて、私はここでPHPから苦情を受けます:

致命的なエラー: 未定義のメソッド Doctrine\DBAL\Query\QueryBuilder::insert() への呼び出し

QueryBuilder.php ソースコードのさらなる検査について

method への参照も、これを継承するクラスも、挿入メカニズムを公開する可能性insert(...)のある に追加された特性もありません。QueryBuilderさらに、これが一番上に表示されます。

/* The query types. */
const SELECT = 0;
const DELETE = 1;
const UPDATE = 2;

挿入クエリの種類はありません。ただし、次の興味深いメソッド コメントがありexecute()ます。

/**
 * Execute this query using the bound parameters and their types.
 *
 * Uses {@see Connection::executeQuery} for select statements and {@see Connection::executeUpdate}
 * for insert, update and delete statements.
 *
 * @return mixed
 */

結論:

これは何百人ものメンテナーが参加する大規模なプロジェクトであり、多数のバージョンにわたって非常に基本的なものを台無しにするよりも、ここで私の解釈の疑いを見つける可能性が高くなりますが、何が欠けているのかを一生理解することはできません. 明らかなことを見るのを手伝ってください。

4

1 に答える 1

4

バージョンによって異なります。挿入は v2.5.0-BETA3 から追加されました。

Viz https://github.com/doctrine/dbal/blob/master/lib/Doctrine/DBAL/Query/QueryBuilder.php#L563コミット

パッケージのバージョンを更新するか、この代替ソリューションを確認するかを決定できます

于 2014-08-22T07:17:40.170 に答える