While playing around with stat relations, I ran into an issue where it was just plain not working. no matter what, it was returning 0.
During tracing, I had found that the Gii model generator had identified a numeric column (unsigned bigint(10)) as a string which was noted in several threads that was done to prevent loss of precision.
For some reason, it just will not sum, count, avg, or what have you.
I can run a custom query but the relation just won’t handle it properly.
Any suggestions besides going to a raw query or using the query builder? I am thoroughly enjoying the ActiveRecord model but this is a pretty glaring problem.
My experience with self::stat is very limited, but I believe that whichever additional option you provide in the definition of relations() will be used build a custom query behind the scenes.
So, this piece of code:
public function relations()
{
return array(
'total'=>array(self::STAT, 'Table', 'ForeignKey', 'select'=>'SUM(`unitPrice`)'),
);
}
might produce something like this:
SELECT SUM(`unitPrice`) as `total` FROM CURRENT_TABLE JOIN `Table` ON ...
and you won’t be able to sum the string unitPrice.
My recommendation is to leave your table column as a signed integer. Whenever I’ve tried to save that one bit of space, I’ve run into a similar issue and CActiveRecord starts complaining one way or another.
Thanks for the tidbit. I assumed that it would just construct a query however no matter what, it always returns 0. If I use a raw query, it responds with the expected value.