Thursday, January 15, 2015

Re: Cakephp 3.0 Get and Modify Query conditions in beforeFind function

Even though that is possible you are tying to do it the hard way. The easiest way you can implement the same is by using the query as a "command" object,
thus instructing the custom finders to do stuff based on the passed options. An example

$table->find('forUser', ['user' => $user])->find('withStatus', ['status' => 'active']);

Then in your table you would create your finders this way:

public function finWithStatus($query, $options) {
    if (!empty($options['user'])) {
         // The user is available from the previous finder, I can add more conditions here based on that
    }
}


I guess the best way I can help you find the best strategy is if you mention what exactly you are trying to do :D
On Thursday, January 15, 2015 at 3:26:09 PM UTC+1, Cake Developer wrote:
Hello,

I am trying to get and modify query conditions in beforeFind function of Behaviour.

function beforeFind(Event $event, Query $query, $options, $primary) {
   // here is what I tried so far.
$conditions = $query->clause('where');
// this gives me Object of Expression Interface and I am not able to convert it in condition array like we have in cakephp 2.x

//what I want to achieve... 
//I want to modify existing conditions in query.
//I want to add new condition in query

}

I spent last 2 days but could not figure out any solution.
Thanks for any help you may be able to provide regarding this.

--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

---
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscribe@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.

No comments: