2009-10-16 8 views
1

J'essaie d'utiliser get_where pour récupérer une liste de tous les enregistrements de la base de données où le propriétaire est égal à l'utilisateur connecté.CodeIgniter get_where

Ceci est ma fonction dans mon contrôleur;

function files() 
{ 
    $owner = $this->auth->get_user(); 

    $this->db->get_where('files', array('owner =' => '$owner'))->result(); 
} 

Et à mon avis, j'ai ce qui suit;

<?php foreach($query->result() as $row): ?> 

    <span><?=$row->name?></span> 

<?php endforeach; ?> 

Lorsque je tente d'accéder au point de vue, je reçois l'erreur fatale: Appel à un résultat de fonction membre() sur un non-objet dans /views/account/files.php sur la ligne 1.

Je me demandais si quelqu'un avait des idées de ce qui pourrait être avec cela?

Merci

Répondre

17

CodeIgniter est un cadre fondé sur les principes MVC. Par conséquent, vous devez généralement séparer la logique d'application, l'abstraction des données et la «sortie» dans leurs zones respectives pour l'utilisation de CodeIgniter. Dans ce cas: contrôleurs, modèles et vues. Juste pour référence, vous devriez normalement avoir votre code "données" comme fonction de modèle, dans ce cas la fonctionnalité get_where. Je vous suggère fortement de lire le User Guide fourni pour vous familiariser avec CodeIgniter, il devrait tenir votre main à travers la plupart des étapes. Voir: Table des matières (en haut à droite).

TL; DR

Pour résoudre votre problème, vous devez vous assurer que vous passez des variables du contrôleur jusqu'à votre point de vue:

function files() 
{ 
    $owner = $this->auth->get_user(); 

    $data['files'] = $this->db->get_where('files', array('owner =' => '$owner'))->result(); 

    $this->load->view('name_of_my_view', $data); 
} 

Et puis assurez-vous d'utiliser la variable correcte dans votre vue:

<?php foreach($files as $row): ?> 

    <span><?=$row['name']; ?></span> 

<?php endforeach; ?> 
4
<?php foreach($query->result() as $row): ?> 

    <span><?=$row->name?></span> 

<?php endforeach; ?> 

Rem ove la fonction de résultat comme ça.

<?php foreach($query as $row): ?> 

    <span><?=$row->name?></span> 

<?php endforeach; ?> 

Btw. C'est une bien meilleure idée de tester la requête pour un résultat avant de le renvoyer.

function files() 
{ 
    $owner = $this->auth->get_user(); 

    $query = $this->db->get_where('files', array('owner =' => '$owner'))->result(); 

    if ($query->num_rows() > 0) 
    { 
     return $query->result(); 
    } 
    return FALSE; 
}