Forget about my previous message. Your solution doesn't work either but it doens't remove indexes. It just does'nt do anything at all.
I tried to do what's explained in this excellent blog : http://mark-story.com/posts/view/using-bindmodel-to-get-to-deep-relations But once again, what works fine for "find" doesn't work for "paginate". I finally use a nasty hack cause I was really tired to try to do it properly! On Jun 23, 5:32 pm, thomaus <[email protected]> wrote: > Hi Johan, > > I agree with you, it should not return an SQL error. Strange... > > Anyway, your solution doesn't work. I tried it and what it does is > that it removes the index "language_id" in the returned array, when > "language_id" is different than 2, BUT it doesn't filter the > pagination. You know what I mean? > > If I could stick the Language table to the Result table, using the > Nationality table as the relation table, the problem should be solved. > But I don't know how to do that. > > Thanks! > > On Jun 22, 12:27 pm, Johan <[email protected]> wrote: > > > > > > > > > That's weird because that code should throw an SQL error. When you > > paginate or do a find, CakePHP will only use on the primary query the > > immediate hasOne/belongsTo associations (in this case Result -> Test), > > so your code should generate something similar to this query: > > > SELECT * FROM results Result LEFT JOIN tests Test ON Test.id = > > Result.test_id WHERE Nationality.language_id LIKE '2'; > > > If that query would work (which doesn't), it would generate an > > additional query for each row fetching the required data from the > > table nationalities. > > So the problem is that you are setting the conditions on the wrong > > place. This code should work correctly: > > > $this->paginate = array( > > 'limit' => 20, > > 'contain' => array( > > 'Test' => array( > > 'Nationality' => array( > > 'fields' => array('language_id'), > > 'conditions' => array('Nationality.language_id LIKE ?' => > > 2) // Do you really need to use LIKE instead of equals? > > ) > > ) > > ) > > ); > > > If you require the Nationality to be an inner join, you may need to > > rebind the models on runtime or add an explicit inner > > join:http://book.cakephp.org/view/1047/Joining-tables > > > Cheers, > > - Johan > > > On Jun 20, 4:49 pm, thomaus <[email protected]> wrote: > > > > Thanks for helping. > > > > I just tried and that is very strange. I don't get anymore SQL error > > > but it doesn't work. I mean the filtering returns an empty array, > > > while it should not. I checked and I'm 100% sure there should be some > > > output after the filtering. > > > > On Jun 20, 11:12 am, Tilen Majerle <[email protected]> wrote: > > > > > emm...try this > > > > > $filter = array(); > > > > $filter['Nationality.language_id LIKE'] = 2; > > > > > -- > > > > Lep pozdrav, Tilen Majerlehttp://majerle.eu > > > > > 2011/6/20 thomaus <[email protected]> > > > > > > Nobody no clue? > > > > > > On Jun 17, 5:43 pm, thomaus <[email protected]> wrote: > > > > > > Hi there, > > > > > > > I am doing2ndorderpaginationusing Containable. It is working fine > > > > > > but when I try to paginate with a2ndorderfilter, it doesn't work > > > > > > anymore. > > > > > > > Here are my models relations : > > > > > > > "Result" belongs to "Test" > > > > > > "Test" belongs to "Nationality" > > > > > > > Here is my code : > > > > > > > $this->Result->recursive = 2; > > > > > > $this->Result->Behaviors->attach('Containable'); > > > > > > > $this->paginate = array( > > > > > > 'limit' => 20, > > > > > > 'contain' => array( > > > > > > 'Test' => array( > > > > > > 'Nationality' => array('fields' => array('language_id')) > > > > > > ))); > > > > > > > $filter = array(); > > > > > > $filter['Test.Nationality.language_id LIKE'] = 2; > > > > > > > $results = $this->paginate(null, $filter); > > > > > > > and I get this error: > > > > > > > SQL Error: 1054: Unknown column 'Test.Nationality.language_id' > > > > > > > If I empty the filter array, I can access $result['Test'] > > > > > > ['Nationality']['language_id'] from my view without any problem so > > > > > > the > > > > > >paginationis working fine BUT the filtering is NOT. Why? > > > > > > -- > > > > > Our newest site for the community: CakePHP Video Tutorials > > > > >http://tv.cakephp.org > > > > > Check out the new CakePHP Questions sitehttp://ask.cakephp.organdhelp > > > > > others with their CakePHP related questions. > > > > > > To unsubscribe from this group, send email to > > > > > [email protected] For more options, visit this > > > > > group > > > > > athttp://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 [email protected] For more options, visit this group at http://groups.google.com/group/cake-php
