Open davidAtInleague opened 7 months ago
quick 7.3.1
quick/models/QuickQb.cfc
Hit a case where Quick tries to treat a string as a struct, e.g. in the following, if values is something like {someColumn: "someValue"}
values
{someColumn: "someValue"}
public any function update( struct values = {}, struct options = {}, boolean toSql = false ) { for ( var key in arguments.values ) { if ( structKeyExists( arguments.values[ key ], "isQuickBuilder" ) ) { arguments.values[ key ] = arguments.values[ key ].getQb(); }
The structKeyExists becomes structKeyExists( "someValue", "isQuickBuilder" ) which fails with "cannot convert string to struct".
structKeyExists( "someValue", "isQuickBuilder" )
Our current workaround is:
diff --git a/modules/quick/models/QuickQB.cfc b/modules/quick/models/QuickQB.cfc index 457378a20..2567f341d 100755 --- a/modules/quick/models/QuickQB.cfc +++ b/modules/quick/models/QuickQB.cfc @@ -305,6 +305,9 @@ component boolean toSql = false ) { for ( var key in arguments.values ) { + if ( isNull( arguments.values[ key ] ) || isSimpleValue( arguments.values[ key ] ) ) { + continue; + } if ( structKeyExists( arguments.values[ key ], "isQuickBuilder" ) ) { arguments.values[ key ] = arguments.values[ key ].getQb(); }
Do you have a way to reproduce this? All the code in Quick that calls .update first generates query param structs using the generateQueryParamStruct method on QuickBuilder.
.update
generateQueryParamStruct
QuickBuilder
quick 7.3.1
quick/models/QuickQb.cfc
Hit a case where Quick tries to treat a string as a struct, e.g. in the following, if
values
is something like{someColumn: "someValue"}
The structKeyExists becomes
structKeyExists( "someValue", "isQuickBuilder" )
which fails with "cannot convert string to struct".Our current workaround is: