|
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 |
|
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 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 |
|
1.3
-- On Wed, Apr 25, 2012 at 5:38 PM, euromark <[hidden email]> wrote: what version are you using? 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 |
|
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 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 |
|
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: 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 |
|
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:
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 |
|
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: 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 |
|
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:
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 |
|
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 |
|
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:
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 |
| Powered by Nabble | Edit this page |
