Bonjour à tous,

J'arrive sans problème faire une recherche dans la table 'Article'.
La pagination est prise en compte.

J'aimerais savoir comment je peux modifier ce code pour qu'il recherche aussi dans la table 'page' et QUE la pagination tienne en compte le résultat de cherche des deux table. Pour commencer j'aimerais qu'une recherche soit aussi faite dans le champs 'name' de la table 'page'

Voici le code qui fonctionne:

function index(){
    $data = current($this->request->data);
    if($this->request->is('put') || $this->request->is('post') ){
        $search_terms = explode(' ', $data'key']);
    $search_terms = array_diff($search_terms,array(''));
    $this->Session->write('Search.terms',$search_terms);
    }

            /**
            * Search in Articles table
            **/ 
            $conditions = array();
            foreach($this->Session->read('Search.terms') as $search_term){
                $conditions] = array('Article.name Like' =>'%'.$search_term.'%');
                $conditions] = array('Article.content Like' =>'%'.$search_term.'%');
                $conditions] = array('Article.noarticle Like' =>'%'.$search_term.'%');
                //$conditions] = array('Page.name Like' =>'%'.$search_term.'%');
            }
// Es-ce possible de modifier ici, pourqu'il fasse la recher aussi dans Page? Et qu'il compte les résultats des deux table dans la pagination
            $this->loadModel('Article');
            $this->Article->contain('Tag','Media');
            $this->paginate = array('Article'=>array('limit'=>12,'order'=>'name ASC'));
            #$d'articles'] = $this->Paginate('Article',array('type'=>'article','online'=>1,'created <= NOW()','or' => $conditions));
            $d'search'] = $this->Paginate('Article',array('type'=>'article','online'=>1,'created <= NOW()','or' => $conditions));

            $this->set($d);

    }

1 réponse


Hello,
Je suis toujours bloqué avec ce problème depuis un bon moment.
J'ai absolument besoin de faire une recherche dans deux tables et que la pagination tienne compte des deux résultat. Auriez-vous une idée?
Auriez-vous besoin de plus d'information?
Milles mercis