# |
Jul 4th 2021, 11:35 |
ndm |
@ragnarog_online Whenever you patch an association property it will be marked as dirty, no matter whether the nested data structure has any changes. It's not a bug, that is the intended behavior so that it is ensured that the ORM saving logic will run on the nested data. There might for example be `beforeSave()` callbacks for the nested data that would modify it, resulting a difference that needs to be saved, if the ORM would bail |
# |
Jul 4th 2021, 09:01 |
ragnarog_online |
SaveStrategy = replace |
# |
Jul 4th 2021, 08:56 |
ragnarog_online |
hello, is this a bug? relations : SalesOrders hasMany SalesOrderBatches SalesOrderBatches hasMany SalesOrderDetails what makes sales_order_batches dirty? |
# |
Jul 3rd 2021, 13:40 |
dereuromark |
I had the same thought^^ |
# |
Jul 3rd 2021, 13:15 |
kevin.pfeifer |
but thanks anyway for the help :bow: |
# |
Jul 3rd 2021, 13:02 |
kevin.pfeifer |
yea, refactoring my whole search logic to the search plugin is on my list |
# |
Jul 3rd 2021, 13:02 |
admad |
especially using the filter collections https://github.com/FriendsOfCake/search/tree/master/docs#filter-collection-classes |
# |
Jul 3rd 2021, 13:01 |
admad |
might as well look into using foc/search since you are at it. It will make your code very clean. |
# |
Jul 3rd 2021, 13:00 |
kevin.pfeifer |
i will do that |
# |
Jul 3rd 2021, 13:00 |
admad |
remove *everything* related to the request :) |
# |
Jul 3rd 2021, 12:59 |
kevin.pfeifer |
but yes, i can remove the request type check |
# |
Jul 3rd 2021, 12:58 |
kevin.pfeifer |
well first it was all present in the controller and then i moved all that inside that finder method |
# |
Jul 3rd 2021, 12:57 |
admad |
why the hell are you even checking request type in there currently? :) |
# |
Jul 3rd 2021, 12:57 |
kevin.pfeifer |
:) |
# |
Jul 3rd 2021, 12:57 |
kevin.pfeifer |
seems logical |
# |
Jul 3rd 2021, 12:56 |
kevin.pfeifer |
:thinking_face: |
# |
Jul 3rd 2021, 12:56 |
admad |
exactly, why should the finder need anything else from the request? |
# |
Jul 3rd 2021, 12:55 |
kevin.pfeifer |
so then I don’t have the whole request object inside my finder and just use the params |
# |
Jul 3rd 2021, 12:55 |
admad |
then use `$options['search']` in your finder to read the search args |
# |
Jul 3rd 2021, 12:54 |
admad |
And the changes is pretty easy, all you have to do is `find('index', ['search' => $this->request->getQuery()])` |
# |
Jul 3rd 2021, 12:53 |
kevin.pfeifer |
alright, then I will change that. thx for the info :bow: |
# |
Jul 3rd 2021, 12:52 |
admad |
@kevin.pfeifer ORM should never know anything about the incoming request. |
# |
Jul 3rd 2021, 09:32 |
kevin.pfeifer |
i was just trying to clean up my controller index function and thought this was fine ^^ |
# |
Jul 3rd 2021, 09:28 |
kevin.pfeifer |
so I shouldn't get the query args through the request object, instead I should pass them via the options. |
# |
Jul 3rd 2021, 03:37 |
admad |
@kevin.pfeifer your code is bad given the fact that you are directly using the query instance inside it instead of passing the querystring args through finder options. |
# |
Jul 2nd 2021, 21:57 |
kevin.pfeifer |
and yes my app has no authentication/authorization till now :) |
# |
Jul 2nd 2021, 21:56 |
kevin.pfeifer |
I don't want to make it a competition but I think my custom finder doesn't look that much better :,) |
# |
Jul 2nd 2021, 21:54 |
tyler.adam.lazenby |
btw yes I know I need to use authorization. |
# |
Jul 2nd 2021, 21:53 |
slackebot2 |
$contactToList) { if ($contactToList->contact_id === $contact->id) { $contact->isPart = true; break; } } } if ($this->request->is('ajax')) { $this->response = $this->response->withDisabledCache(); return $this->response ->withType('application/json') |
# |
Jul 2nd 2021, 21:53 |
slackebot2 |
->withStringBody(json_encode($contacts)); } return $contacts; }``` |
# |
Jul 2nd 2021, 21:53 |
slackebot2 |
$contacts = $this->Authorization->applyScope($contacts, 'index'); $contactToLists = $this->Contacts->ContactToLists->find() ->where(['contact_list_id' => $contact_list_id]); /** @var \App\Model\Entity\Contact $contact */ foreach ($contacts as $contact) { $contact->isPart = false; /** @var \App\Model\Entity\ContactToList $contactToList */ foreach ($contactToLists as |
# |
Jul 2nd 2021, 21:53 |
slackebot2 |
$contacts = $this->Contacts->find(); $contacts = $contacts->where([ 'OR' => [ "CONCAT_WS(' ', first_name, last_name) LIKE" => $contacts->func()->concat(['%', $param, '%']), 'first_name LIKE' => $contacts->func()->concat(['%', $param, '%']), 'last_name LIKE' => $contacts->func()->concat(['%', $param, '%']), ], ])->orderAsc('first_name'); |
# |
Jul 2nd 2021, 21:53 |
tyler.adam.lazenby |
```/** * Ajax Contact Search * @return \Cake\Http\Response|mixed|null */ public function searchContacts() { $this->Authorization->skipAuthorization(); $param = $this->request->getQuery('param'); $referrer = $this->request->referer(); $params = Router::getRouteCollection()->parse($referrer); $contact_list_id = $params['id']; // All Contacts |
# |
Jul 2nd 2021, 21:52 |
tyler.adam.lazenby |
I mean... let me just show you my nonesense |
# |
Jul 2nd 2021, 21:52 |
kevin.pfeifer |
but basically that should be the base how you filter/search in php |
# |
Jul 2nd 2021, 21:52 |
kevin.pfeifer |
I too have to refactor my search to that plugin because its pretty awesome |
# |
Jul 2nd 2021, 21:52 |
tyler.adam.lazenby |
Thank you kevin |
# |
Jul 2nd 2021, 21:51 |
tyler.adam.lazenby |
I didn't even know this existed |
# |
Jul 2nd 2021, 21:15 |
kevin.pfeifer |
custom API Point based on https://github.com/FriendsOfCake/search ? |
# |
Jul 2nd 2021, 19:41 |
tyler.adam.lazenby |
what have you found is the best live search js component for cakephp? |
# |
Jul 2nd 2021, 18:59 |
kevin.pfeifer |
as a native german speaker I can definitely NOT recommend using it in any matter :,) |