我有以下DQL查詢:如何正確檢索從多條記錄一對多的關係(原則 - DQL查詢)
$qb->select('v, b, c, t, p, m, s, f, h')
->from('UrlBuilderBundle:Version', 'v')
->leftJoin('v.ddlBrands', 'b', 'WITH', 'b.version = v.id AND b.isActive = 1 AND v.isActive = 1')
->leftJoin('v.ddlCampaignObjectives', 'c', 'WITH', 'c.version = v.id AND c.isActive = 1')
->leftJoin('v.ddlThemes', 't', 'WITH', 't.version = v.id AND t.isActive = 1')
->leftJoin('t.ddlProducts', 'p', 'WITH', 'p.isActive = 1')
->leftJoin('v.ddlMediums', 'm', 'WITH', 'm.version = v.id AND m.isActive = 1')
->leftJoin('m.ddlSources', 's', 'WITH', 's.ddlMedium = m.id AND s.isActive = 1')
->leftJoin('v.fields', 'f', 'WITH', 'f.version = v.id AND f.isActive = 1')
->leftJoin('f.helpText', 'h', 'WITH', 'h.field = f.id AND h.isActive = 1');
$query = $qb->getQuery();
$versions = $query->getArrayResult();
所有指定的連接是具有多對一/表一個之間到除ddlProducts和ddlThemes表之外的許多關係。有一個多對多的關係(ddlProducts和ddlThemes),這是造成問題,它導致以下錯誤:
Error: Maximum execution time of 30 seconds exceeded at /vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php:296)"}
任何人都可以點我解決這個錯誤方向是正確的?
錯誤它在PHP中,所以你必須在php.ini中增加php時間執行時間max_execution_time –
我不想走這條路。我想優化查詢,因此運行時間不會很長。 – Sid
您應該調試並檢查查詢是否正常工作或不... 對於那個臨時添加=>「set_time_limit(0);」 如果查詢執行成功,那麼我認爲我們可以優化後 – Kunal