Contenable n'est pas la même chose que JOIN .
Containable ne joint pas les requêtes en une seule requête, mais pour la plupart crée des requêtes complètement séparées , puis combine les résultats pour votre plus grand plaisir.
Donc - par votre erreur, dans la requête qui est exécutée sur les orders
table, il n'y a pas de Product.product_price
car ces champs ne sont disponibles que dans une requête complètement distincte.
Essayez d'utiliser JOINs à la place.