Log message #4228067

# At Username Text
# Feb 20th 2020, 21:51 tomrwaller Hi all - any idea why this line would be generating a count of items selected instead of an array of ID's in my add.php? `echo $this->Form->control('associated_technologies._ids', ['options' => $associatedTechnologies]);`
# Feb 20th 2020, 21:45 jan-willem Thank you!
# Feb 20th 2020, 21:43 jan-willem Just noticed. Working. Perfect!
# Feb 20th 2020, 21:40 dereuromark Locally I cannot reproduce for some reason...
# Feb 20th 2020, 21:39 dereuromark Also exists there ;)
# Feb 20th 2020, 21:35 jan-willem But will look to it. thnx
# Feb 20th 2020, 21:35 jan-willem I suppose this one was for me? :P I'm already on CakePHP 4
# Feb 20th 2020, 21:28 wizardfix Reading now @challgren thanks :)
# Feb 20th 2020, 21:27 challgren @wizardfix see https://www.dereuromark.de/2020/02/06/virtual-query-fields-in-cakephp/
# Feb 20th 2020, 21:27 dereuromark @hawk dot syntax is not supported by has afaik. I use here normally https://github.com/dereuromark/cakephp-shim/blob/master/src/Model/Entity/ReadTrait.php - which then supports paths.
# Feb 20th 2020, 21:26 wizardfix From the book (3.8): > Control which Fields Used for Ordering¶ > By default sorting can be done on any non-virtual column a table has. Does this mean the Paginator can no way sort on virtual fields? :thinking_face:
# Feb 20th 2020, 21:18 jan-willem can I use the has() function as well for nested associations? I know I can use it to check if `games->events` exists. But can I use it as well to check if `games->events->competitions` exists?
# Feb 20th 2020, 18:37 phantomwatson Ha! Yeah, that's my experience too. Sometimes just by analyzing your problem enough to write a well-formed question or bug report, the cause reveals itself.
# Feb 20th 2020, 18:34 jh the next attempt works
# Feb 20th 2020, 18:34 jh always when u ask after tinkering for a few hours
# Feb 20th 2020, 18:34 jh i just tinkered around it it works
# Feb 20th 2020, 18:22 phantomwatson I'd like to help, but I'm having a hard time understanding your question.
# Feb 20th 2020, 18:11 jh damn i hate this guessing/magic :E
# Feb 20th 2020, 18:02 jh in patchEntity i use 'TariffsDocuments' => ['onlyIds' => true],
# Feb 20th 2020, 18:01 jh tariffs_documents._ids.0 tariffs_documents._ids.1 etc contents each is just the foreign key to the tariff document
# Feb 20th 2020, 18:01 jh What could probably stop _ids BTM to save the association?
# Feb 20th 2020, 17:57 kaliel :)
# Feb 20th 2020, 17:57 wizardfix @kaliel yes what was I thinking! Of course I have this data from the request! Just had a blind spot lol! It all works now! :)
# Feb 20th 2020, 17:45 slackebot https://github.com/cakephp/cakephp/commit/0cf9921798d823fa87b61bb93f908c57a132a53f#diff-525e59c1441ed03389d3cf0ac1198130R186
# Feb 20th 2020, 17:45 phantomwatson The core uses a colon, the letter C, and a number for placeholders. The colon, I assume is so it's easier to parse the SQL and find those placeholders. The numbers are to differentiate each placeholders from the others. But I don't know why the letter C is used. The commit history for the relevant code suggests that it might be short for "comparison".
# Feb 20th 2020, 17:35 wizardfix @phantomwatson ok, great, `$query->getValueBinder()->bindings()[':c1']['value']` gets me the value in a `debug()` call so now I'll try getting it in the form. But I wonder where this `':c1'` property comes from... :thinking_face:
# Feb 20th 2020, 17:32 kaliel Don't you get these values in requested data ?
# Feb 20th 2020, 17:29 wizardfix Calling `toArray()` just gives me the users without the params. The situation is: 1. User selects "Inactive", "Active" or "All". These map to values 0, 1, 2 respectively. So this value is in the query object and I want to use it to prepopulate the HTML select element in the form when I return the response. `
# Feb 20th 2020, 17:27 phantomwatson It looks like all of those methods are public, so it should work.
# Feb 20th 2020, 17:26 phantomwatson So I'd try `$query->getValueBinder()->bindings()` and see if that works.
# Feb 20th 2020, 17:26 phantomwatson It looks like `$params` isn't part of the query object per se, but generated by its `__debugInfo()` method. That method uses `$this->getValueBinder()->bindings()` to populate `'params'`.
# Feb 20th 2020, 17:25 phantomwatson Is there any way to sidestep the problem by just capturing that data at the point that the query object is being built?
# Feb 20th 2020, 17:24 phantomwatson I think that John's asking about getting the parameters that were passed into the query object via the `->where()` method, not getting data from the database.
# Feb 20th 2020, 17:22 kaliel `$query->toArray()`
# Feb 20th 2020, 17:20 slackebot variety of ways and am not finding any good examples of getting data from a query object. I need to access this value to prepopulate a form selector. :thinking_face:
# Feb 20th 2020, 17:20 slackebot 'params' => [ ':c0' => [ 'value' => (int) 2, 'type' => 'tinyinteger', 'placeholder' => 'c0' ], ':c1' => [ 'value' => (int) 1, 'type' => 'tinyinteger', 'placeholder' => 'c1' ] ], 'defaultTypes' => [ 'Users__id' => 'integer', 'Users.id' => 'integer', 'id' => 'integer', 'Users__name' => 'string', 'Users.name' => 'string',``` How to I get the `'value' => (int) 1` from the `':c1'` element of `params`? I've tried a
# Feb 20th 2020, 17:20 slackebot `Creators__id`, Creators.name AS `Creators__name`, Creators.email AS `Creators__email`, Creators.admin AS `Creators__admin`, Creators.password AS `Creators__password`, Creators.status AS `Creators__status`, Creators.created_by AS `Creators__created_by`, Creators.created_on AS `Creators__created_on` FROM users Users LEFT JOIN users Creators ON Creators.id = (Users.created_by) WHERE (Users.status < :c0 AND Users.status = :c1) LIMIT 30 OFFSET 0',
# Feb 20th 2020, 17:20 wizardfix I have a `Query` object that starts like this: ```'(help)' => 'This is a Query object, to get the results execute or iterate it.', 'sql' => 'SELECT Users.id AS `Users__id`, Users.name AS `Users__name`, Users.email AS `Users__email`, Users.admin AS `Users__admin`, Users.password AS `Users__password`, Users.status AS `Users__status`, Users.created_by AS `Users__created_by`, Users.created_on AS `Users__created_on`, Creators.id AS
# Feb 20th 2020, 17:10 dereuromark afaik they still dont use any static analyzer, e.g. phpstan, as such the functional part is also quite bad.
# Feb 20th 2020, 17:10 dereuromark I know^^ worst code in general
# Feb 20th 2020, 17:09 kaliel you wan to see a real mess in doc ? try symfony and its annotations :)