On Sat, Jan 22, 2011 at 7:47 PM, mmamedov <[email protected]> wrote:
> I need to run this query in $this->paginate(). 99 is an arbitrary user
> id number that is externally provided.
>
> I read this, http:book.cakephp.org/view/249/Custom-Query-Pagination,
> but it didn't help. I did also read this http:www.littlehart.net/
> atthekeyboard/2008/03/04/custom-cakephp-12-pagination-queries/, and
> other similar posts, but they won't work for me. Because in my
> controller I only need this custom pagination for a single action, all
> other actions of the same controller work with default cakephp
> settings. IF I override paginate() then I'll end up messing up my
> other actions - because I will also need to override paginateCount()
> with my custom sql, something that will make my pagination in other
> actions useless. I love cake, but stuff like this sometimes makes you
> frustrated.. why they didn't provide such a basic functionality. I
> also couldn't find in the book.cakephp.org a way of how to create
> Union queries. go figure.
>
> What do you suggest i do?
>
> SELECT *
> FROM users
> WHERE users.id
> IN (
> SELECT friends.friend_id AS id
> FROM friends
> WHERE friends.user_id =99
> AND friends.status =1
> UNION
> SELECT friends.user_id AS id
> FROM friends
> WHERE friends.friend_id =99
> AND friends.status =1
> )
>
You can pass conditions in Controller::paginate(). It's the 2nd param,
$scope. This is merged with the $paginate class var conditions and
passed as the 1st param to both Model::paginate() & paginateCount().
So, in this particular action, pass as the 2nd param, eg.
array('union' => true) to Controller::paginate(). Override both
Model::paginate() and paginateCount() ...
if (isset($conditions['union']))
{
unset($conditions['union']);
// do what you need to do for your union query
}
else
{
return parent::paginate($conditions, $fields, $order, $limit, $page,
$recursive, $extra);
// or parent::paginateCount($conditions, $recursive, $extra);
}
Untested but seems to me like the way to go.
--
Our newest site for the community: CakePHP Video Tutorials
http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others
with their CakePHP related questions.
To unsubscribe from this group, send email to
[email protected] For more options, visit this group at
http://groups.google.com/group/cake-php