Page 1 of 1

calculated fields error

PostPosted: Fri Nov 16, 2007 12:55 pm
by ststoddard
Hello,

I am attempting a calculated field using the __sql__ construct in the fields.ini file:

Code: Select all
__sql__ = "SELECT p.*,datediff(curdate(),birthdate) as age from Participants as p"


However, I get the following error:
Fatal error: Cannot use object of type PEAR_Error as array in /var/www/private/dataface/Dataface/Table.php on line 1789


If I just use curdate() it works, however other expressions (e.g. curdate()-birthdate) do not.

???

PostPosted: Fri Nov 16, 2007 1:47 pm
by shannah
Hi Stephen,

Unfortunately dataface uses an SQL parser based on the PEAR SQL_Parser class. I have made numerous improvements to it to support most cases, however it doesn't handle arithmetic in the SQL query... it's on a todo list, but I'm not looking forward to re-opening that can of worms...

Best regards

Steve

PostPosted: Mon Nov 26, 2007 2:02 pm
by ADobkin
What is the best workaround in this situation? Should we use views instead, and let MySQL do the calculations there, or is there a better method?

PostPosted: Mon Nov 26, 2007 2:08 pm
by shannah
Certainly using a view is one workaround. As Stephen mentioned, using the datediff() SQL function should work. It is just the use of arithmetic operators (e.g. +, *, /, -) that the parser doesn't handle currently.

Another workaround is to just use a dummy field and then override the xxx__display() method to display the calculation that you require.

http://xataface.com/forum/viewtopic.php?t=4057#20393

-Steve