我需要在非默認連接上運行原始 SQL 查詢。
我在檔案中看到使用備用連接的唯一方法是注入ManagerRegistry. 這讓我得到一個ObjectManager但我沒有看到如何執行原始 sql。
EntityManager有getConnection可以讓我運行原始 SQL 的方法,但我看不到如何為與 DI 的備用連接獲取物體管理器。
這是我根據檔案使用多個連接的位置:
public function Foo(ManagerRegistry $doctrine)
{
$om = $doctrine->getManager('foo');
// How do I use $om to create a raw SQL query
}
作為參考,這里是 symfonycasts 顯示如何使用 EntityManager 執行此操作,但我不確定如何選擇foo連接,因為注入將為我提供默認連接。
$conn = $entityManager->getConnection();
$stmt = $conn->prepare($sql);
$res = $stmt->executeQuery();
uj5u.com熱心網友回復:
這就是我的做法。
首先,您需要更新配置以在以下位置設定不同的連接config/package/doctrine.yaml:
doctrine:
dbal:
default_connection: default
connections:
default:
url: '%env(resolve:DATABASE_URL)%'
alt:
url: '%env(resolve:DATABASE_URL_ALT)%'
然后,在您的控制器或服務中,您可以注入ManagerRegistry并獲取連接:
public function index(ManagerRegistry $managerRegistry)
{
$connection = $managerRegistry->getConnection("alt");
$result = $connection
->prepare("SELECT * FROM your_table_in_alt_db")
->executeQuery()
->fetchAllAssociative()
;
dump($result);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/425514.html
