Ich habe folgende DQL-Abfrage:Wie aus einer viele zu viele Beziehung korrekt Datensätze abrufen (Lehre - DQL-Abfrage)
$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();
alle angegebenen Joins zwischen Tabellen, die eine viele zu einem haben/ein zu vielen Beziehungen außer zwischen den Tabellen ddlProducts und ddlThemes. Es gibt eine viele zu viele Beziehung (ddlProducts und ddlThemes), die Probleme verursacht, führt dies zu dem folgenden Fehler:
Error: Maximum execution time of 30 seconds exceeded at /vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php:296)"}
mir jemand kann bei der Lösung dieser Fehler in die richtige Richtung?
der Fehler ist in PHP so müssen Sie php Zeit Executeaion in php.ini max_execution_time –
Ich möchte nicht diesen Weg gehen. Ich möchte die Abfrage optimieren, damit die Ausführung nicht so lange dauert. – Sid
Sie sollten debuggen und überprüfen, ob die Abfrage ordnungsgemäß funktioniert oder nicht ... Dazu vorübergehend hinzufügen => "set_time_limit (0);" Wenn Abfrage erfolgreich ausgeführt wird, dann denke ich, dass wir anschließend optimieren können – Kunal