![](/img/trans.png)
[英]Using nested queries and many to many relationships in Doctrine's QueryBuilder
[英]Using Doctrine 2's QueryBuilder to create complex queries
我正在嘗試使用MySQL數據庫和Doctrine 2作為ORM在PHP 7中編寫自己的登錄腳本。 不幸的是,當我嘗試從數據庫中獲取數據時(例如,用戶通過登錄名登錄帳戶),我得到了Doctrine\\ORM\\Query\\QueryException
。
我遵循代碼優先方法,並按如下所述創建用戶帳戶的實體,以及Doctrine 2實體管理器。 我有什么想念的嗎? 使用簡單的->findall()
獲取數據可以正常工作。
我嘗試建立的查詢:
$query = DatabaseManager::_instance()->createQuery("SELECT a FROM " . LoginAccountDTO::class . " a WHERE a.username = ?1");
或使用查詢生成器:
$qb = DatabaseManager::_instance()->createQueryBuilder();
$qb->select('account')
->from(LoginAccountDTO::class, 'account')
->where('account.username = ?1 OR account.email = ?1')
->setParameter(1, $username);
(以及對主義的expr()
充分測試)。
創建的DQL如下:
"SELECT a FROM Entities\LoginAccountDTO account WHERE account.username = ?1 or account.email = ?1"
現在,每次我嘗試->getResult()
查詢時,都會得到以下錯誤輸出:
致命錯誤:未被捕獲的學說\\ ORM \\ Query \\ QueryException:從(實體目錄)\\ vendor \\ doctrine \\ orm \\ lib \\ Doctrine \\ ORM \\ Query \\ QueryException.php中的a.username =?1中選擇一個FROM Entities \\ LoginAccountDTO :43堆棧跟蹤:#0(項目目錄)\\ vendor \\ doctrine \\ orm \\ lib \\ Doctrine \\ ORM \\ Query \\ Parser.php(487):Doctrine \\ ORM \\ Query \\ QueryException :: dqlError('SELECT帳戶FROM K ...')#1(項目目錄)\\ vendor \\ doctrine \\ orm \\ lib \\ Doctrine \\ ORM \\ Query \\ Parser.php(987):Doctrine \\ ORM \\ Query \\ Parser-> semanticalError('line 0,col 14 ...',數組)#2(項目目錄)\\ vendor \\ doctrine \\ orm \\ lib \\ Doctrine \\ ORM \\ Query \\ Parser.php(1728):Doctrine \\ ORM \\ Query \\ Parser-> validateAbstractSchemaName('Entities \\ Accoun')#3(項目目錄)\\ vendor \\ doctrine \\ orm \\ lib \\ Doctrine \\ ORM \\ Query \\ Parser.php(1578):Doctrine \\ ORM \\ Query \\ Parser-> RangeVariableDeclaration()#4(項目- dir)\\ ve in (project-dir)\\ vendor \\ doctrine \\ orm \\ lib \\ Doctrine \\ ORM \\ Query \\ QueryException.php在第65行
Doctrine的配置應該是正確的,因為如果嘗試通過->findAll()
獲取數據,則可以看到存儲的數據。 實體也可以在數據庫中正確創建。
我試圖像文檔中所述使用Doctrine 2(.6.0),但沒有成功。 可以請任何人幫助我使用Doctrine的查詢字符串/准備好的查詢中的where子句從數據庫中獲取數據嗎?
我發現,此問題的解決方案對我來說是安靜的:問題是由於使用實體類的類中缺少import語句而引起的。 教義只是回應致命錯誤。
簡而言之,解決方案:始終導入將由類使用的實體。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.