2011-08-16 6 views
0

Je crée une application Web dans codeigniter, elle extrait les messages de la base de données pour un utilisateur en fonction des mots-clés ajoutés à sa liste de mots-clés. essaie de récupérer tous les postes avec les mots-clés des utilisateurs, mais il retourne un seul poste alors qu'il ya Mutliple résultats obtenus pour les mots-clés dans les messagesRequête renvoyant une seule ligne de données

Voici sont les fonctions de mon modèle

Cette fonction permet de récupérer les utilisateurs mots-clés

function user_keywords($user_id) { 
     //Get all the user keywords 
     $q = $this->db->select('keywords') 
         ->from('keywords') 
         ->where('U_id',$user_id) 
         ->get(); 
     $words = $q->result_array(); 
     return $words; 
    } 

Cette fonction récupère les messages

function get_latest_pheeds() { 
     $this->load->helper('date'); 
     $time = time(); 
     $keyword = $this->user_keywords($this->ion_auth->user_id); 
     foreach($keyword as $word) { 
     $q = $this->db->select('user_id,pheed_id,datetime,pheed,COUNT(pheed_comments.comment_id) as comments') 
     ->from('pheeds') 
     ->join('pheed_comments','pheed_comments.P_id=pheeds.pheed_id','left') 
     ->like('pheed',$word['keywords']) 
     ->order_by('datetime','desc') 
     ->get(); 
     } 
     $rows = $q->result_array(); 
     return $rows; 
    } 

Et mon contrôleur il encode JSON

function latest_pheeds() { 
      if($this->isLogged() == true) { 
      $this->load->model('pheed_model'); 
      $data = $this->pheed_model->get_latest_pheeds(); 
      echo json_encode($data); 
      } 
      return false; 
    } 

J'apprécie vraiment l'aide

+0

Êtes-vous sûr que le problème est pas dans votre méthode select() ou result_array()? – Mike

+0

'$ q' dans votre méthode' get_latest_pheeds() 'aura la dernière requête. Avant de suggérer une meilleure approche, que contient 'mot word ['keywords']'? un seul mot-clé? est-ce exactement la même chose dans la table 'keywords' que dans la table' pheeds' (dans le champ 'pheed')? – ifaour

+0

$ mot ['mots-clés'] contient des mots-clés retournés par user_keywords() méthode – MrFoh

Répondre

1

Je pense (mais il est difficile sans test) que le problème vient former la fonction get_last_feeds:

vous requête est construite sur chaque boucle de itération, mais vous allez chercher les résultats après. Je pense que vous obtenez les résultats uniquement pour la dernière requête (si vous ne récupérez pas les résultats sur chaque boucle, l'itération suivante écrase la requête d'origine sans aller chercher les résultats).

Je fais quelque chose comme ceci:

<?php 
function get_latest_pheeds() { 
    $rows = array(); // The final result, an array of rows 
    $this->load->helper('date'); 
    $time = time(); 
    $keyword = $this->user_keywords($this->ion_auth->user_id); 
    foreach($keyword as $word) { 
    $q = $this->db->select('user_id,pheed_id,datetime,pheed,COUNT(pheed_comments.comment_id) as comments') 
    ->from('pheeds') 
    ->join('pheed_comments','pheed_comments.P_id=pheeds.pheed_id','left') 
    ->like('pheed',$word['keywords']) 
    ->order_by('datetime','desc') 
    ->get(); 
    $rows[] = $q->result_array(); 
    } 

    return $rows; 
} 
+0

je vais modifier la fonction et l'essayer – MrFoh

+0

cela a fonctionné, mais a quelques hoquet je peux gérer – MrFoh

Questions connexes