Benim kullanıcı modeli üç çok farklı SQL sorguları bir TOPLA gereken CakePKP'deki sanal alanı var. Ben 3 diğer sanal alanlarda bir toplamıdır sanal bir alanı alarak bunu gerçekleştirmek için çalışıyorum.
var $virtualFields = array (
'field_one' => 'select coalesce(sum(coalesce(t_a.field, 0)), 0)*10 as field_one from t_a join t_b on t_a.t_b_id = t_b.id where t_b.user_id=User.id',
'field_two' => 'select coalesce(sum(coalesce(t_c.field, 0)), 0)*2 as field_two from t_d left join (t_c) on (t_d.id=t_c.t_d_id) where t_d.user_id = User.id',
'field_three' => 'select coalesce(sum(coalesce(value, 0)), 0) as field_three from t_e where user_id=User.id',
'field_sum' => 'User.field_one+User.field_two+User.field_three'
);
Bu işe yaramazsa. Ben 'field_sum' aldığında hata 'field_one yok' olsun. Ben üç sql ifadeleri birleştirmek için nasıl önce sordunuz ve gerçekten tatmin edici bir cevap alamadık. Bu sadece onları yalnız her çalıştırmak ve aslında sonra bunları özetlemek için çok daha iyi ve daha kolay olmuştur. CakePHP bağlamında ile bunu yapmak için herhangi bir yolu var mı?
Edit
İşte kekinin oluşturulan SQL olduğunu:
SELECT
/* Users fields */
(select coalesce(sum(coalesce(t_a.field, 0)), 0)*10 as field_one from t_a join t_b on t_a.t_b_id = t_b.id where t_b.user_id=User.id) AS `User__field_one`,
(select coalesce(sum(coalesce(t_c.field, 0)), 0)*2 as field_two from t_d left join (t_c) on (t_d.id=t_c.t_d_id) where t_d.user_id = User.id) AS `User__field_two`,
(select coalesce(sum(coalesce(value, 0)), 0) as bonus_reputation from reputation_bonuses where user_id=User.id) AS `User__field_three`, (`User`.`field_one`+`User`.`field_two`+`User`.`field_three`) AS `field_sum`,
FROM `users` AS `User`
WHERE `User`.`email` = '/* redacted */' AND `User`.`password` = '/* redacted */' LIMIT 1
Ben onlar seçildiler nasıl yararlanmak için (User__field_one+User__field_two+User__field_three)
için tanımını değiştirmeyi denedim olduğunu görmüş. Hayır şans.
SQL Hata: tam hata olduğunu 1054 bilinmeyen kolon User.field_one
alan listesinde.