quick icon indicating copy to clipboard operation
quick copied to clipboard

Migrate from retrieveQuery to asQuery - object type returned from asQuery not accepted where object type returned from retrieveQuery is accepted.

Open davidAtInleague opened this issue 2 years ago • 1 comments

quick 6.2.1

The following example demonstrates a pattern of using Quick to build some (arbitrarily complicated and reusable) where clause, and then using that clause to drive a QB whereIn.

The result of retrieveQuery has been (and remains) fine here, but using the result of asQuery throws an exception.


getInstance("QueryBuilder@qb")
	.from("some_other_table")
	// ok
	.whereIn("ID", getInstance("User").someFilterScope().retrieveQuery().reselect("ID") )

	// fails with:
	// Invalid call of the function [compileSelect],
	// first Argument [query] is of invalid type,
	// Cannot cast Object type [Component quick.models.QuickBuilder] to a value of type [QueryBuilder]
	.whereIn("ID", getInstance("User").someFilterScope().asQuery().reselect("ID") )
	.get()

davidAtInleague avatar Jun 05 '23 19:06 davidAtInleague

Ah. I see why. You are passing a QuickBuilder instance into a QueryBuilder instance. It would work if they were both QuickBuilder instances.

I’m not sure how possible it will be to support passing in a QuickBuilder to a QueryBuilder. This seems like a place where retrieveQuery is probably the right option, but I’ll keep this issue open in case inspiration strikes.

elpete avatar Jun 07 '23 15:06 elpete