L'exemple de requête, d'un point de vue SQL, utilise une "sous-requête corrélée" à l'intérieur de la clause select et c'est souvent une manière très inefficace de former une requête.
SELECT ParentTable.*, (SELECT MAX(ChildTable.NumberField)
FROM ChildTable
WHERE ChildTable.FK_Id = ParentTable.Id)
FROM ParentTable
Bien qu'il puisse sembler à première vue plus complexe et donc moins efficace, il est généralement préférable pour les performances d'éviter les "sous-requêtes corrélées" dans une clause select et de les remplacer par une "table dérivée", comme ceci :
SELECT ParentTable.*,c.MxNum
FROM ParentTable
LEFT JOIN (
SELECT ChildTable.FK_Id, MAX(ChildTable.NumberField) as MxNum FROM ChildTable
GROUP BY ChildTable.FK_Id
) AS c ON c.FK_Id = ParentTable.Id
Notez qu'une sous-requête corrélée avec une clause select peut renvoyer NULL, et pour cette raison, si elle est remplacée par une table dérivée, le type de jointure équivalent est un LEFT OUTER JOIN (ou simplement LEFT JOIN) car cela permet également un résultat NULL. Cependant, si vous n'avez pas besoin de NULL pour la colonne, utilisez plutôt INNER JOIN, plus efficace.
Toutes mes excuses à l'avance pour ne pas connaître la syntaxe Yii2, mais il semble pertinent de connaître une approche alternative efficace qui pourrait aider à résoudre le problème.