API 平台原始查询
API Platform Raw Query
任何人都知道如何在 API 平台 controller/handler、
中使用原始查询
我正在尝试做类似的事情,
$temp_table_query = $this->entityManager->createQuery('CREATE TEMPORARY TABLE {temp_validation_code_table} LIKE {validation_code}');
$qb = $this->entityManager->createQueryBuilder();
$qb = $qb->select('LOAD DATA LOCAL INFILE {$file} INTO TABLE {temp_validation_code_table} (code) SET offer = {$offer}');
尝试将文件数据加载到临时 table 以在插入实际数据库之前进行验证 table
这需要使用底层 Doctrine PDO
抽象 (Doctrine\DBAL\Connection
) 来完成,可以通过 $entityManager->getConnection();
.
获得
但是,首先,您需要确保基础 PDO
连接配置为允许 LOAD LOCAL INFILE(通过将 PDO::MYSQL_ATTR_LOCAL_INFILE
设置为 true
)。这可以通过提供以下 Doctrine 配置(在 doctrine.yaml
中)来完成:
doctrine:
dbal:
#...
options:
1001: true # This sets PDO::MYSQL_ATTR_LOCAL_INFILE to true
请注意,允许 LOAD LOCAL INFILE 可能会引入安全漏洞。
鉴于我有一个名为 example.csv
的文件,其中包含以下 CSV 数据:
1,"foo"
2,"bar"
3,"baz"
然后我可以使用 Doctrine PDO
抽象插入此数据:
<?php
//...
// Local path to the CSV file
$file = __DIR__ . '/example.csv';
// Obtaining the PDO connection
$connection = $this->entityManager->getConnection();
// Creating the temporary table
$connection->executeStatement('CREATE TEMPORARY TABLE foobar (id int AUTO_INCREMENT PRIMARY KEY , name VARCHAR(256) NOT NULL)');
// Inserting the CSV data
$connection->executeStatement("LOAD DATA LOCAL INFILE '$file' INTO TABLE foobar FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'");
任何人都知道如何在 API 平台 controller/handler、
中使用原始查询我正在尝试做类似的事情,
$temp_table_query = $this->entityManager->createQuery('CREATE TEMPORARY TABLE {temp_validation_code_table} LIKE {validation_code}');
$qb = $this->entityManager->createQueryBuilder();
$qb = $qb->select('LOAD DATA LOCAL INFILE {$file} INTO TABLE {temp_validation_code_table} (code) SET offer = {$offer}');
尝试将文件数据加载到临时 table 以在插入实际数据库之前进行验证 table
这需要使用底层 Doctrine PDO
抽象 (Doctrine\DBAL\Connection
) 来完成,可以通过 $entityManager->getConnection();
.
但是,首先,您需要确保基础 PDO
连接配置为允许 LOAD LOCAL INFILE(通过将 PDO::MYSQL_ATTR_LOCAL_INFILE
设置为 true
)。这可以通过提供以下 Doctrine 配置(在 doctrine.yaml
中)来完成:
doctrine:
dbal:
#...
options:
1001: true # This sets PDO::MYSQL_ATTR_LOCAL_INFILE to true
请注意,允许 LOAD LOCAL INFILE 可能会引入安全漏洞。
鉴于我有一个名为 example.csv
的文件,其中包含以下 CSV 数据:
1,"foo"
2,"bar"
3,"baz"
然后我可以使用 Doctrine PDO
抽象插入此数据:
<?php
//...
// Local path to the CSV file
$file = __DIR__ . '/example.csv';
// Obtaining the PDO connection
$connection = $this->entityManager->getConnection();
// Creating the temporary table
$connection->executeStatement('CREATE TEMPORARY TABLE foobar (id int AUTO_INCREMENT PRIMARY KEY , name VARCHAR(256) NOT NULL)');
// Inserting the CSV data
$connection->executeStatement("LOAD DATA LOCAL INFILE '$file' INTO TABLE foobar FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'");