2009-05-09 13 views
1

J'ai une table (product_shoppingcart) avec 4 colonnes:Comment écrire une requête de recherche en utilisant Kohana PHP?

id, product_id, shoppingcart_id, product_quantity. 

J'utilise ORM de Kohana.

Je souhaite écrire une requête de recherche qui renvoie toutes les lignes où la colonne shoppingcart_id contient 1 (par exemple).

Je l'ai déjà essayé:

$arr = ORM::factory('product_shoppingcart')->where('shoppingcart_id',$shoppingcartID)->find_all(); 

mais cela ne fonctionne pas.

Quelqu'un peut-il m'aider s'il vous plaît?

+0

Ce qui ne fonctionne pas à ce sujet? Je l'ai juste mis en place comme vous avez écrit et j'ai réussi à le faire fonctionner. Je soupçonne que votre modèle utilise peut-être 'has_one' ou un autre attribut. Pourriez-vous poster votre modèle aussi? – Ambirex

+0

En outre, avez-vous un profileur attaché à votre contrôleur? De cette façon, vous pouvez voir le SQL qui est exécuté. Vous pouvez essayer d'exécuter la requête dans phpMyAdmin pour voir les résultats bruts. – Ambirex

+0

Ambirex, cela fonctionne mais il ne renvoie qu'une ligne, pas beaucoup d'entre eux. je veux obtenir peut-être 10 lignes dont shoppingcart_id est égal à $ shoppingcartID. – Attilah

Répondre

1

Votre exemple de code devrait fonctionner, mais le problème est peut-être que vous n'effectuez pas d'itération sur votre jeu de résultats?

$results = ORM::factory('product_shoppingcart') 
      ->where('shoppingcart_id', $shoppingcartID) 
      ->find_all(); 
foreach ($results as $product_shoppingcart) { 
    print Kohana::debug($product_shoppingcart->as_array()); 
} 

Si vous avez plus d'une ligne avec cet identifiant, cela devrait vous donner un iterator résultat dans les résultats de $, que vous pouvez ensuite marcher avec la boucle foreach. J'ai beaucoup d'exemples de code de travail similaire, si vous n'êtes toujours pas capable de le faire fonctionner.

0

Votre table ne devrait-elle pas être "product_shoppingcarts" ou est-ce que quelque chose me manque?

+0

Vous pouvez définir $ table_name = 'product_shoppingcart'; dans le modèle si votre table est nommée autre chose. – Ambirex

1

Voici ce qu'il ressemblerait à ceci:

$arr = ORM::factory('product_shoppingcart')->where(
        'shoppingcart_id',"=",$shoppingcartID)->find_all(); 
Questions connexes