# |
Jul 17th 2018, 11:37 |
neon1024 |
I think I’ve drunk too much tea and eaten too much pick and mix today :shocked_face_with_exploding_head: |
# |
Jul 17th 2018, 11:37 |
neon1024 |
(╯°□°)╯︵ ┻━┻ |
# |
Jul 17th 2018, 11:35 |
birdy247 |
The calc is non changeable |
# |
Jul 17th 2018, 11:35 |
neon1024 |
Simple as that ;) |
# |
Jul 17th 2018, 11:34 |
neon1024 |
Simplify the calculation and the problem goes away! |
# |
Jul 17th 2018, 11:34 |
neon1024 |
Ah, so the problem is in the calculation. |
# |
Jul 17th 2018, 11:33 |
birdy247 |
@neon1024 the use case the @matt is working on is as follows:.. We are bringing back a list of "books" against a set of criteria. Each book is then given a score depending on the logged in user. Its quite an involved calculation to generate the score |
# |
Jul 17th 2018, 11:33 |
neon1024 |
Thanks @edgaras.jan good job is this in my admin area! |
# |
Jul 17th 2018, 11:32 |
lorenzo |
https://book.cakephp.org/3.0/en/orm/query-builder.html#using-sql-functions |
# |
Jul 17th 2018, 11:31 |
edgaras.jan |
> Order fields/directions are not sanitized by the query builder. > You should use a whitelist of fields/directions when passing > in user-supplied data to `order()`. |
# |
Jul 17th 2018, 11:31 |
lorenzo |
@johnwayne use the functions builder |
# |
Jul 17th 2018, 11:31 |
edgaras.jan |
`->order(['duration' => $this->getRequest()->getQuery('direction')])` is insecure |
# |
Jul 17th 2018, 11:23 |
josbeir |
:P |
# |
Jul 17th 2018, 11:23 |
neon1024 |
Yeah, but currently I only need it in that one place ;) #lazy |
# |
Jul 17th 2018, 11:23 |
johnwayne |
Is there a way to integrate in cakephp query '->where([CAST(id / POW(3, CAST(LOG10(id) AS SIGNED)) AS SIGNED) = $myId])' |
# |
Jul 17th 2018, 11:22 |
josbeir |
you will get that value everywhere you need it |
# |
Jul 17th 2018, 11:22 |
josbeir |
i'm still conviced that, in your case @neon1024 it would be cleaner to also store the duration in db |
# |
Jul 17th 2018, 11:21 |
neon1024 |
Depending on what it is and what data it involves of course |
# |
Jul 17th 2018, 11:20 |
neon1024 |
Yeah, if you can’t do the calc in SQL, it’s probably worth storing it |
# |
Jul 17th 2018, 11:19 |
josbeir |
(or store the calculated field in db too) |
# |
Jul 17th 2018, 11:19 |
neon1024 |
If you want to use PHP, you’d probably need to look into paginating a collection |
# |
Jul 17th 2018, 11:18 |
neon1024 |
I’m not convinced you can’t calculate in SQL, it’s pretty well featured |
# |
Jul 17th 2018, 11:18 |
josbeir |
@dereuromark did you find it? |
# |
Jul 17th 2018, 11:13 |
matt |
I was thinking I need to get all the results from the query, map in my calculated value and then paginate the results myself using collection take etc |
# |
Jul 17th 2018, 11:12 |
matt |
thanks though my problem is I can't calculate the field using sql |
# |
Jul 17th 2018, 11:11 |
neon1024 |
You probably only really need lines 3 and 6-8 |
# |
Jul 17th 2018, 11:11 |
neon1024 |
File uploaded https://cakesf.slack.com/files/U1BT622HW/FBT5SFH6J/sorting_on_calculated_field.php / https://slack-files.com/T053DPNCM-FBT5SFH6J-9f79beece9 - This is for the Crud plugin, but the query instance is the same either way. |
# |
Jul 17th 2018, 11:09 |
matt |
thanks @neon1024 - how did you append the calculated field to the query? |
# |
Jul 17th 2018, 11:00 |
neon1024 |
I just wrote a conditional in my controller, to check for the sort field, and then appended my calculated field onto the query |
# |
Jul 17th 2018, 11:00 |
neon1024 |
Heh, I did this yesterday, but it was a bit hackish |
# |
Jul 17th 2018, 10:26 |
matt |
Hi, I'm using cake pagination but I need to filter the results on a calculated field (I'm calculating a value for each of the results which I can't do with sql). What's the best way to paginate these results? Seems standard pagination isn't suitable as that relies on adding a limit field to the sql. thanks |
# |
Jul 17th 2018, 10:12 |
josbeir |
that should be a good thing tho |
# |
Jul 17th 2018, 10:12 |
josbeir |
yes but i think that its still untouched in the afterSave callback and only reset set correctly after |
# |
Jul 17th 2018, 10:12 |
tim |
@josbeir Yes it is set to false once it's saved |
# |
Jul 17th 2018, 10:11 |
dereuromark |
let me check |
# |
Jul 17th 2018, 10:06 |
josbeir |
i'm looking at Table::_onSaveSuccess |
# |
Jul 17th 2018, 10:06 |
josbeir |
so it should be still as is when you do stuff no +? |
# |
Jul 17th 2018, 10:06 |
josbeir |
but i see it happens after the event callback |
# |
Jul 17th 2018, 10:06 |
dereuromark |
would be nice to have this back |
# |
Jul 17th 2018, 10:05 |
dereuromark |
exactly, that is resettet, as such it cant help |
# |
Jul 17th 2018, 10:05 |
josbeir |
@dereuromark isn't the isNew() property set to false after the afterSave() |