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

Reply via email to