Quantcast

Pagination

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Pagination

Hill180
Trying to use the paginator in the view

I have an Author who is has a Book and where the "book" was written (book_id.name, city_id.name)
Author sort works, title sort work, but not the sort for city_id. I can sort by the id, but obviously this won't work because
the id has nothing to do with the name of the city.



<th><?php echo $this->Paginator->sort('Author', 'name'); ?></th>
<th><?php echo $this->Paginator->sort('Book', 'title.name'); ?></th>
<th><?php echo $this->Paginator->sort('Where Written', 'title.city_id'); ?></th> (sorts, but the names are not sorted because
it is using the id)

need something like this
<th><?php echo $this->Paginator->sort('Where Written', 'title.city_id.name'); ?></th> //does not work.

Is there a way to get this to work, or is it a customer pagination?

thanks.. 
j

--
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
[hidden email] For more options, visit this group at http://groups.google.com/group/cake-php
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Pagination

euromark (munich)
what version are you using?
because in 2.x it should be the other way around:

sort($key, $title)

please always mention your cake version



Am Donnerstag, 26. April 2012 01:29:26 UTC+2 schrieb Hill180:
Trying to use the paginator in the view

I have an Author who is has a Book and where the "book" was written (book_id.name, city_id.name)
Author sort works, title sort work, but not the sort for city_id. I can sort by the id, but obviously this won't work because
the id has nothing to do with the name of the city.



<th><?php echo $this->Paginator->sort('Author', 'name'); ?></th>
<th><?php echo $this->Paginator->sort('Book', 'title.name'); ?></th>
<th><?php echo $this->Paginator->sort('Where Written', 'title.city_id'); ?></th> (sorts, but the names are not sorted because
it is using the id)

need something like this
<th><?php echo $this->Paginator->sort('Where Written', 'title.city_id.name'); ?></th> //does not work.

Is there a way to get this to work, or is it a customer pagination?

thanks.. 
j

--
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
[hidden email] For more options, visit this group at http://groups.google.com/group/cake-php
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Pagination

Hill180
1.3

On Wed, Apr 25, 2012 at 5:38 PM, euromark <[hidden email]> wrote:
what version are you using?
because in 2.x it should be the other way around:

sort($key, $title)

please always mention your cake version



Am Donnerstag, 26. April 2012 01:29:26 UTC+2 schrieb Hill180:
Trying to use the paginator in the view

I have an Author who is has a Book and where the "book" was written (book_id.name, city_id.name)
Author sort works, title sort work, but not the sort for city_id. I can sort by the id, but obviously this won't work because
the id has nothing to do with the name of the city.



<th><?php echo $this->Paginator->sort('Author', 'name'); ?></th>
<th><?php echo $this->Paginator->sort('Book', 'title.name'); ?></th>
<th><?php echo $this->Paginator->sort('Where Written', 'title.city_id'); ?></th> (sorts, but the names are not sorted because
it is using the id)

need something like this
<th><?php echo $this->Paginator->sort('Where Written', 'title.city_id.name'); ?></th> //does not work.

Is there a way to get this to work, or is it a customer pagination?

thanks.. 
j

--
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
[hidden email] For more options, visit this group at http://groups.google.com/group/cake-php

--
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
[hidden email] For more options, visit this group at http://groups.google.com/group/cake-php
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Pagination

jeremyharris
In reply to this post by Hill180
Is City a hasOne or belongsTo relationship? If so, and your find code is using contain or recursive to include those in the results, you can do this:

$this->Paginator->sort('Where Written', 'City.name');

Check your data and SQL queries to see if it's joined that way.

On Wednesday, April 25, 2012 4:29:26 PM UTC-7, Hill180 wrote:
Trying to use the paginator in the view

I have an Author who is has a Book and where the "book" was written (book_id.name, city_id.name)
Author sort works, title sort work, but not the sort for city_id. I can sort by the id, but obviously this won't work because
the id has nothing to do with the name of the city.



<th><?php echo $this->Paginator->sort('Author', 'name'); ?></th>
<th><?php echo $this->Paginator->sort('Book', 'title.name'); ?></th>
<th><?php echo $this->Paginator->sort('Where Written', 'title.city_id'); ?></th> (sorts, but the names are not sorted because
it is using the id)

need something like this
<th><?php echo $this->Paginator->sort('Where Written', 'title.city_id.name'); ?></th> //does not work.

Is there a way to get this to work, or is it a customer pagination?

thanks.. 
j

--
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
[hidden email] For more options, visit this group at http://groups.google.com/group/cake-php
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Pagination

Hill180
City hasMany books, books only have one author.

City.name didn't work

var $hasMany = array(
        'Book' => array(
            'className' => 'Book',
            'foreignKey' => 'book_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ));

On Thu, Apr 26, 2012 at 7:46 AM, jeremyharris <[hidden email]> wrote:
Is City a hasOne or belongsTo relationship? If so, and your find code is using contain or recursive to include those in the results, you can do this:

$this->Paginator->sort('Where Written', 'City.name');

Check your data and SQL queries to see if it's joined that way.


On Wednesday, April 25, 2012 4:29:26 PM UTC-7, Hill180 wrote:
Trying to use the paginator in the view

I have an Author who is has a Book and where the "book" was written (book_id.name, city_id.name)
Author sort works, title sort work, but not the sort for city_id. I can sort by the id, but obviously this won't work because
the id has nothing to do with the name of the city.



<th><?php echo $this->Paginator->sort('Author', 'name'); ?></th>
<th><?php echo $this->Paginator->sort('Book', 'title.name'); ?></th>
<th><?php echo $this->Paginator->sort('Where Written', 'title.city_id'); ?></th> (sorts, but the names are not sorted because
it is using the id)

need something like this
<th><?php echo $this->Paginator->sort('Where Written', 'title.city_id.name'); ?></th> //does not work.

Is there a way to get this to work, or is it a customer pagination?

thanks.. 
j

--
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
[hidden email] For more options, visit this group at http://groups.google.com/group/cake-php

--
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
[hidden email] For more options, visit this group at http://groups.google.com/group/cake-php
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Pagination

jeremyharris
If it's hasMany then I think your relationship should be:

var $hasMany = array(
        'Book' => array(
            'className' => 'Book',
            'foreignKey' => 'city_id', // books table has city_id
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ));

In that case, Book belongsTo City

class Book extends AppModel {
  var $belongsTo = array('City', 'Author');
}

Then you can paginate like the example I had above since it will LEFT join the city models for all the books, as long as you contain the city model:

// in books controller
$this->paginate = array(
  'contain' => array('City', 'Author');
);
$this->paginate('Book'); // paginate from the book model to be able to sort by Book, Author or City

On Thursday, April 26, 2012 3:06:34 PM UTC-7, Hill180 wrote:
City hasMany books, books only have one author.

City.name didn't work

var $hasMany = array(
        'Book' => array(
            'className' => 'Book',
            'foreignKey' => 'book_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ));

On Thu, Apr 26, 2012 at 7:46 AM, jeremyharris <[hidden email]> wrote:
Is City a hasOne or belongsTo relationship? If so, and your find code is using contain or recursive to include those in the results, you can do this:

$this->Paginator->sort('Where Written', 'City.name');

Check your data and SQL queries to see if it's joined that way.


On Wednesday, April 25, 2012 4:29:26 PM UTC-7, Hill180 wrote:
Trying to use the paginator in the view

I have an Author who is has a Book and where the "book" was written (book_id.name, city_id.name)
Author sort works, title sort work, but not the sort for city_id. I can sort by the id, but obviously this won't work because
the id has nothing to do with the name of the city.



<th><?php echo $this->Paginator->sort('Author', 'name'); ?></th>
<th><?php echo $this->Paginator->sort('Book', 'title.name'); ?></th>
<th><?php echo $this->Paginator->sort('Where Written', 'title.city_id'); ?></th> (sorts, but the names are not sorted because
it is using the id)

need something like this
<th><?php echo $this->Paginator->sort('Where Written', 'title.city_id.name'); ?></th> //does not work.

Is there a way to get this to work, or is it a customer pagination?

thanks.. 
j

--
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
[hidden email] For more options, visit this group at http://groups.google.com/group/cake-php

--
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
[hidden email] For more options, visit this group at http://groups.google.com/group/cake-php
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Pagination

Hill180
You know my example was a different then my actual code (I know I should have just used it)

I have two cities per book.

IE

main_city_id (where it was written)
billing_city_id (where the author wants to get paid)

How do I distinguish them?  I can't use City.name

Thanks.

On Thu, Apr 26, 2012 at 3:13 PM, jeremyharris <[hidden email]> wrote:
If it's hasMany then I think your relationship should be:

var $hasMany = array(
        'Book' => array(
            'className' => 'Book',
            'foreignKey' => 'city_id', // books table has city_id

            'conditions' => '',
            'fields' => '',
            'order' => ''
        ));

In that case, Book belongsTo City

class Book extends AppModel {
  var $belongsTo = array('City', 'Author');
}

Then you can paginate like the example I had above since it will LEFT join the city models for all the books, as long as you contain the city model:

// in books controller
$this->paginate = array(
  'contain' => array('City', 'Author');
);
$this->paginate('Book'); // paginate from the book model to be able to sort by Book, Author or City


On Thursday, April 26, 2012 3:06:34 PM UTC-7, Hill180 wrote:
City hasMany books, books only have one author.

City.name didn't work

var $hasMany = array(
        'Book' => array(
            'className' => 'Book',
            'foreignKey' => 'book_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ));

On Thu, Apr 26, 2012 at 7:46 AM, jeremyharris <[hidden email]> wrote:
Is City a hasOne or belongsTo relationship? If so, and your find code is using contain or recursive to include those in the results, you can do this:

$this->Paginator->sort('Where Written', 'City.name');

Check your data and SQL queries to see if it's joined that way.


On Wednesday, April 25, 2012 4:29:26 PM UTC-7, Hill180 wrote:
Trying to use the paginator in the view

I have an Author who is has a Book and where the "book" was written (book_id.name, city_id.name)
Author sort works, title sort work, but not the sort for city_id. I can sort by the id, but obviously this won't work because
the id has nothing to do with the name of the city.



<th><?php echo $this->Paginator->sort('Author', 'name'); ?></th>
<th><?php echo $this->Paginator->sort('Book', 'title.name'); ?></th>
<th><?php echo $this->Paginator->sort('Where Written', 'title.city_id'); ?></th> (sorts, but the names are not sorted because
it is using the id)

need something like this
<th><?php echo $this->Paginator->sort('Where Written', 'title.city_id.name'); ?></th> //does not work.

Is there a way to get this to work, or is it a customer pagination?

thanks.. 
j

--
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
[hidden email] For more options, visit this group at http://groups.google.com/group/cake-php

--
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
[hidden email] For more options, visit this group at http://groups.google.com/group/cake-php

--
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
[hidden email] For more options, visit this group at http://groups.google.com/group/cake-php
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Pagination

jeremyharris
So the book belongsTo will look something like this:

var $belongsTo = array(
  'BillingCity' => array(
    'className' => 'City',
    'foreignKey' => 'billing_city_id'
  ), 
  'MainCity' => array(
    'className' => 'City',
    'foreignKey' => 'main_city_id'
  ), 
  'Author'
);

Then your pagination needs to contain both cities (or just the one you are sorting by):

$this->paginate = array(
  'contain' => array('BillingCity', 'MainCity', 'Author');
);
$this->paginate('Book');

And lastly, your pagination link:

$this->Paginator->sort('Where Written', 'BillingCity.name'); // or MainCity

On Thursday, April 26, 2012 5:23:30 PM UTC-7, Hill180 wrote:
You know my example was a different then my actual code (I know I should have just used it)

I have two cities per book.

IE

main_city_id (where it was written)
billing_city_id (where the author wants to get paid)

How do I distinguish them?  I can't use City.name

Thanks.

On Thu, Apr 26, 2012 at 3:13 PM, jeremyharris <[hidden email]> wrote:
If it's hasMany then I think your relationship should be:

var $hasMany = array(
        'Book' => array(
            'className' => 'Book',
            'foreignKey' => 'city_id', // books table has city_id

            'conditions' => '',
            'fields' => '',
            'order' => ''
        ));

In that case, Book belongsTo City

class Book extends AppModel {
  var $belongsTo = array('City', 'Author');
}

Then you can paginate like the example I had above since it will LEFT join the city models for all the books, as long as you contain the city model:

// in books controller
$this->paginate = array(
  'contain' => array('City', 'Author');
);
$this->paginate('Book'); // paginate from the book model to be able to sort by Book, Author or City


On Thursday, April 26, 2012 3:06:34 PM UTC-7, Hill180 wrote:
City hasMany books, books only have one author.

City.name didn't work

var $hasMany = array(
        'Book' => array(
            'className' => 'Book',
            'foreignKey' => 'book_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ));

On Thu, Apr 26, 2012 at 7:46 AM, jeremyharris <[hidden email]> wrote:
Is City a hasOne or belongsTo relationship? If so, and your find code is using contain or recursive to include those in the results, you can do this:

$this->Paginator->sort('Where Written', 'City.name');

Check your data and SQL queries to see if it's joined that way.


On Wednesday, April 25, 2012 4:29:26 PM UTC-7, Hill180 wrote:
Trying to use the paginator in the view

I have an Author who is has a Book and where the "book" was written (book_id.name, city_id.name)
Author sort works, title sort work, but not the sort for city_id. I can sort by the id, but obviously this won't work because
the id has nothing to do with the name of the city.



<th><?php echo $this->Paginator->sort('Author', 'name'); ?></th>
<th><?php echo $this->Paginator->sort('Book', 'title.name'); ?></th>
<th><?php echo $this->Paginator->sort('Where Written', 'title.city_id'); ?></th> (sorts, but the names are not sorted because
it is using the id)

need something like this
<th><?php echo $this->Paginator->sort('Where Written', 'title.city_id.name'); ?></th> //does not work.

Is there a way to get this to work, or is it a customer pagination?

thanks.. 
j

--
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
[hidden email] For more options, visit this group at http://groups.google.com/group/cake-php

--
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
[hidden email] For more options, visit this group at http://groups.google.com/group/cake-php

--
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
[hidden email] For more options, visit this group at http://groups.google.com/group/cake-php
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Pagination

Hill180
Here is the real example I am trying.

The webpage has a list of work order that are open.


<th><? echo $this->Paginator->sort('Work Order ID','WorkOrder.id') ?></th> //works
<th><? echo $this->Paginator->sort('Customer','Customer.name') ?></th> //works
<th><? echo $this->Paginator->sort('City','MainCity.name') ?></th> //no worky

Customer Model:

var $belongsTo = array(
       'main_city' => array(
            'className' => 'City',
            'foreignKey' => 'main_city_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ),
        'billing_city' => array(
            'className' => 'City',
            'foreignKey' => 'billing_city_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ),...

  var $hasMany = array(
        'WorkOrder' => array(
            'className' => 'WorkOrder',
            'foreignKey' => 'customer_id',
            'dependent' => false,
        ),


Work Order Model

var $belongsTo = array(
        'Customer' => array(
            'className' => 'Customer',
            'foreignKey' => 'customer_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ),
 
City Model

  var $hasMany = array(
        'MainCity' => array(
            'className'=>'Customer',
            'foreignKey'=> 'main_city_id',
            'dependent'=>true,
        ),
              'BillingCity' => array(
            'className'=>'Customer',
            'foreignKey'=> 'billing_city_id',
            'dependent'=>true,
        ));
       

--
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
[hidden email] For more options, visit this group at http://groups.google.com/group/cake-php
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Pagination

jeremyharris
Why didn't you use the $belongsTo array I gave you? Your belongsTo has changed the aliases from MainCity to main_city, so paginating by MainCity will not work.

Rename the aliases to be CamelCased and try again. Also, debug the results of $this->paginate() to make sure it includes the MainCity and any other data you are trying to sort by.

-jeremy

On Friday, April 27, 2012 4:45:16 PM UTC-7, Hill180 wrote:
Here is the real example I am trying.

The webpage has a list of work order that are open.


<th><? echo $this->Paginator->sort('Work Order ID','WorkOrder.id') ?></th> //works
<th><? echo $this->Paginator->sort('Customer','Customer.name') ?></th> //works
<th><? echo $this->Paginator->sort('City','MainCity.name') ?></th> //no worky

Customer Model:

var $belongsTo = array(
       'main_city' => array(
            'className' => 'City',
            'foreignKey' => 'main_city_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ),
        'billing_city' => array(
            'className' => 'City',
            'foreignKey' => 'billing_city_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ),...

  var $hasMany = array(
        'WorkOrder' => array(
            'className' => 'WorkOrder',
            'foreignKey' => 'customer_id',
            'dependent' => false,
        ),


Work Order Model

var $belongsTo = array(
        'Customer' => array(
            'className' => 'Customer',
            'foreignKey' => 'customer_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ),
 
City Model

  var $hasMany = array(
        'MainCity' => array(
            'className'=>'Customer',
            'foreignKey'=> 'main_city_id',
            'dependent'=>true,
        ),
              'BillingCity' => array(
            'className'=>'Customer',
            'foreignKey'=> 'billing_city_id',
            'dependent'=>true,
        ));
       

--
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
[hidden email] For more options, visit this group at http://groups.google.com/group/cake-php
Loading...