Can't delete related record with date as primary key
Posted:
Tue Sep 18, 2012 3:59 pm
by stephane
Hi,
I have an Exception 'Attempt to use array in query clause' when I try to delete a selected related record.
The (related) table is :
- Code: Select all
CREATE TABLE rtable (
id_test int(11) NOT NULL,
the_date date NOT NULL,
field3 varchar(20) DEFAULT NULL,
PRIMARY KEY (id_test,the_date)
)
id_test is my foreign key pointing to the field 'id' from the table 'test' :
- Code: Select all
[myrelation]
rtable.id_test = "$id"
I think that the date is presented as an array when building the where clause.
This exception is thrown only when I try to delete the related record from the related list, using check box and action "with selected -> remove".
Everything goes fine if I delete the related record from its view tab.
I use Xataface 1.3.2
Best Regards
Re: Can't delete related record with date as primary key
Posted:
Mon Sep 24, 2012 9:28 am
by shannah
Can you post the exception error readout?
Re: Can't delete related record with date as primary key
Posted:
Tue Sep 25, 2012 1:44 pm
by stephane
Sure. Here it is :
PHP Fatal error: Uncaught exception 'Exception' with message 'Attempt to use array in query clause' in D:\dev\www\test_xataface\xataface\Dataface\QueryBuilder.php:503
Stack trace:
#0 D:\dev\www\test_xataface\xataface\Dataface\QueryBuilder.php(665): Dataface_QueryBuilder->_fieldWhereClause(Array, Array, true, 'rtable')
#1 D:\dev\www\test_xataface\xataface\Dataface\QueryBuilder.php(229): Dataface_QueryBuilder->_where(Array)
#2 D:\dev\www\test_xataface\xataface\Dataface\IO.php(197): Dataface_QueryBuilder->select('', Array, false, 'rtable')
#3 D:\dev\www\test_xataface\xataface\Dataface\IO.php(1687): Dataface_IO->read(Array, Object(Dataface_Record))
#4 D:\dev\www\test_xataface\xataface\Dataface\RemoveRelatedRecordForm.php(321): Dataface_IO->removeRelatedRecord(Object(Dataface_RelatedRecord), '1', true)
#5 [internal function]: Dataface_RemoveRelatedRecordForm->delete(Array)
#6 D:\dev\www\test_xataface\xataface\lib\HTML\QuickForm.php(1626): call_user_func(Array, Array)
#7 D:\dev\www\test_xataface\xataface\actions\remove_related_reco in D:\dev\www\test_xataface\xataface\Dataface\QueryBuilder.php on line 503
Do you want me to attach a zip with a small sample that brings out the issue ?
Re: Can't delete related record with date as primary key
Posted:
Tue Sep 25, 2012 2:25 pm
by shannah
Thanks. I have fixed this in SVN. I have also posted a bug report with details of the fix at
http://bugs.weblite.ca/view.php?id=1158Here is a diff of the 1.3.x branch if you want to just make a fix in your version.
- Code: Select all
d142-58-249-174:xataface-1.3.x shannah$ svn diff -r 4104:4105
Index: Dataface/IO.php
===================================================================
--- Dataface/IO.php (revision 4104)
+++ Dataface/IO.php (revision 4105)
@@ -1690,7 +1690,7 @@
$currKeyNames = array_keys($domainTable->keys());
// Names of key fields in the domain table
foreach ($currKeyNames as $keyName){
- $query[$keyName] = $related_record->val($keyName);
+ $query[$keyName] = $related_record->strval($keyName);
$absVals[$domainTable->tablename.'.'.$keyName] = $query[$keyName];
}
Notice that there is only one line changed. A val() to a strval()
_Steve
Re: Can't delete related record with date as primary key
Posted:
Tue Sep 25, 2012 3:01 pm
by stephane
Don't thank me... Many thanks to you ! You saved me so much hours of work.
Your work is really great and the way you handle is really professional.
In a few words: I'm a fan.