Thursday, May 23, 2013

RE: CakePHP 2.x Moving Find into Model

Yeah just to keep it simple but allow to pass vars if needed.

Just an example what I sent but you can pop wars in everything condition you want based on the controller action.

 

I have some if logged in page based on viewed / like / hate…. Its limitless. So define the core structure and just simply swap out as needed

 

From: cake-php@googlegroups.com [mailto:cake-php@googlegroups.com] On Behalf Of Jeremy Burns : Class Outfit
Sent: Friday, May 24, 2013 2:01 AM
To: cake-php@googlegroups.com
Subject: Re: CakePHP 2.x Moving Find into Model

 

Got it - thanks. So you're really just setting up the paginate variable in the model rather than the controller then calling it from the controller to set up pagination before doing a paginate find?

 

On 24 May 2013, at 05:25, "Advantage+" <movepixels@gmail.com> wrote:



Not sure if this is any help. But I hate all the $params in the controller especially if you have to do it on the fly so I set all the params in the model like such: (Just swap out 'model' for your own )

Model:

public function _Pagination($limit = 15){

                               

                                $params = array(

                                                'conditions' => array(

                                                                                'fields' => array(

                                                                                                'Model.id',

                                                                                                'Model.featured',

                                                                                                'Model.title',

                                                                                                'Model.description),

                                                                                'limit' => $limit,

                                                                                'order' => array(

                                                                                                'Model.created DESC'),

                                                                                'contain' => array(

                                                                                                'State' => array(

                                                                                'fields' => array(

                                                                                                'State.abrev')),

                                                                'Country' => array(

                                                                                'fields' => array(

                                                                                                'Country.name',

                                                                                                'Country.iso')));

                               

                                return $params;

                }

 

Controller:

$this->paginate = $this->Model->_Pagination ($anything you want to pass $limit, $conditions…….);

And just pop it into the find into the $params like

 

$this->paginate = $this->Model->_Pagination($limit = 10); or anything you might want to edit on the fly.

 

Swap out all the vars you want and make it work for you.

Then do standard:

 

$this->set('whatever', $this->paginate('Model'));

 

All it is basically is the same as you normally would do in the controller but rather than having all that crap I find it easier to say paginateThis(), pagginateThat() rather than all that in the controller and just pull the params from the model.

 

Dave

 

From: cake-php@googlegroups.com [mailto:cake-php@googlegroups.com] On Behalf Of Jeremy Burns : Class Outfit
Sent: Friday, May 24, 2013 1:00 AM
To: cake-php@googlegroups.com
Subject: Re: CakePHP 2.x Moving Find into Model

 

Have you got an example of that?

 

On 24 May 2013, at 01:09, lowpass <zijn.digital@gmail.com> wrote:




Apply the array to the $paginate class var, not the method. Basically, you can declare the $paginate array as a class var, then add to or override any part of it from within an action.

 

On Thu, May 23, 2013 at 7:12 PM, Larry Lutz <lutzle@swbell.net> wrote:

I'm trying to achieve the fat model/skinny controller mantra in CakePHP 2.7. In that scenario, the model should control the data, and that means moving the finds out of the controllers and into the models. However, at least with the view and admin_view actions, one needs the data paginated.

The problem starts there. It's easy enough to do a $this->find('all') in the model to get the data, along with any conditions, contains, etc. However that produces an array. Paginator->paginate(), as far as I can tell won't work in the model; it's a component that only works in a controller. Yet, if I take the array produced in the model into the controller and try to pass it on toPaginator->paginate(), it fails because paginate won't accept an array.

In terms of trying to achieve the fat model/skinny controller goal, what am I missing here. How can I achieve a paginated result while still having the model (properly) do the work of managing and finding the data?

 

-- 
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?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

 

 

-- 
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?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

 

-- 
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?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

 

-- 
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?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.    

 

--
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?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

No comments: