2009-01-13 6 views
0

CakePHP m'a demandé comment interroger la base de données dans CakePHP et retourner les données à $ data uniquement lorsque la table de requête $ data [id] a une correspondance [sub_id] dans une deuxième table

une requête standard:

$data = $this->Table1->findAll(array("Table1.deleted" => "0"), null, "Table1.id DESC", 25, null, 1); 

Mais je veux seulement les valeurs mises en données $ lorsque les données de $ [ 'tableau 1'] [ 'id'] se trouve dans [ 'table2 '] [' sub_id ']

Merci!

Répondre

1

Si vous avez configuré correctement vos relations, il devrait le faire automatiquement. Pouvez-vous coller votre configuration de relation de modèle pour Table1 et Table2?

0

Supernovah -

S'il vous plaît préciser une chose pour moi: vous écrivez que vous voulez avoir que des valeurs mises en données $ lorsque table1.id se trouve dans table2.sub_id. Voulez-vous dire que table2.sub_id est une clé étrangère, reliant à table1?

Je pense que Beau a raison - si vous avez les modèles correctement liés, en utilisant une variable HABTM ou belongsTo, etc., findAll devrait automatiquement extraire les enregistrements associés de table2. Le dernier avertissement est que les associations de modèles sont affectées par la valeur de Model-> récursive. Si vous avez modifié la valeur de la propriété récursive dans votre code, cela modifiera la profondeur à laquelle les relations de modèle peuvent être placées sur une requête donnée.

HTH!

0

Dans le modèle, dans le tableau de relation ajouter:

$hasMany = array(
..... 
'required' => true 
.... 
); 

Ceci devrait faire une jointure interne dans SQL plutôt que d'une jointure gauche. J'espère que cela t'aides.

Questions connexes