【发布时间】:2017-07-25 11:32:22
【问题描述】:
我有以下 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),它会导致以下错误:
错误:超过 30 秒的最大执行时间 /vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php:296)"}
谁能指出我解决此错误的正确方向?
【问题讨论】:
-
php 中的错误,所以你必须在 php.ini max_execution_time 中增加 php time execuetaion
-
我不想走这条路。我想优化查询,使其运行时间不长。
-
您应该调试并检查查询是否正常工作...为此暂时添加 => "set_time_limit(0);"如果查询成功执行,那么我认为我们可以在之后进行优化
-
你能把这个查询的结果用getOneOrNullResult yo避免最大时间执行错误
标签: php mysql symfony doctrine-orm dql