2017-03-07 85 views
1

我願做一個子查詢,以做到與QueryBuilder的下面PostgreSQL的查詢:如何正確使用querybuilder來執行子查詢?

SELECT i.* FROM internship i 
WHERE EXISTS (SELECT iw.* 
       FROM internship_weeks iw 
       WHERE i.id = iw.internship) 

有沒有人有一個想法如何獲得與QueryBuilder的相同的結果?或者也許與DQL?

感謝您的幫助!

回答

1

作爲例子,只爲證明HOW-TO使用select語句中的子查詢的SELECT語句,假設我們有什麼發現,還沒有編譯地址(沒有記錄存在於地址表)中的所有用戶:

// get an ExpressionBuilder instance, so that you 
$expr = $this->_em->getExpressionBuilder(); 

// create a subquery 
$sub = $this->_em->createQueryBuilder() 
    ->select('iw') 
    ->from(IntershipWeek::class, 'iw') 
    ->where('i.id = iw.intership'); 


$qb = $this->_em->createQueryBuilder() 
    ->select('i') 
    ->from(Intership::class, 'u') 
    ->where($expr->exists($sub->getDQL())); 

return $qb->getQuery()->getResult(); 

希望這個幫助

相關問題