SELECT drop_rate.MIN, drop_rate.MAX, (@CHANCE:=IF((((drop_rate.ITEM_CHANCE*4)*(drop_rate.GROUP_CHANCE*4))/100 > 100), 100, (drop_rate.ITEM_CHANCE*4)*(drop_rate.GROUP_CHANCE*4))/100)) AS PERC, itemdata.CLIENT_NAME, CEIL(1/(@CHANCE/100)) AS FRAC FROM drop_rate, itemdata WHERE drop_rate.NPC_ID=43 AND itemdata.id=drop_rate.ITEM_ID
Wiem, że mogę wykonać kożystajac z propela taka kwerendę ale uzyskam wtedy result set nie obiekty ( tylko, czy da się jakoś inaczej ? )
Z góry dziękuję za pomoc
Edit:
Na kanale #symfony powiedziano mi, że takie rzeczy tylko w erze i propel tego nie potrafi. Co najwyżej żeby otrzymać obiekty można postąpić tak.
<?php $query = " SELECT itemdata.ID AS id, drop_rate.MIN AS min, drop_rate.MAX AS max, (@CHANCE:=IF((((drop_rate.ITEM_CHANCE*1)*(drop_rate.GROUP_CHANCE*1))/100 > 100), 100, ((drop_rate.ITEM_CHANCE*1)*(drop_rate.GROUP_CHANCE*1))/100)) as PERC, itemdata.CLIENT_NAME AS client_name, CEIL(1/(@CHANCE/100)) as frac FROM drop_rate, itemdata WHERE drop_rate.NPC_ID = 43 AND itemdata.id = drop_rate.ITEM_ID "; $connection = Propel::getConnection(); $statement = $connection->prepareStatement($query); $result = $statement->executeQuery(); while ($result->next()) { $id = $result->getInt('id'); $item = ItemdataPeer::retrieveByPk($id); if ($item instanceof Itemdata) { $items[] = $item; } } ?>
Niestety generuje to tyle zapytań ile otrzymamy rezultatów a i do FRAC i PERC nie ma dostępu przez get ( trzeba dopisać coś w klasach bazowych? ) Co prawda można to zminimalizować do 2 zapytań przez retriveByPK(array()) ale chyba jednak daruje sobie w tym przypadku obiekty. To tak gdyby ktoś w przyszłości miał taki problem

Edit:
Da się jednak normalnie. Dodając warunek do criteria można tam wstawić dowolne wyrażenie czyli również warunki. Do wyciągnięcia obiektów służy metoda hydrate.