afbeelding van ziepe

Database Abstraction Layer - beginner vraag

Hallo iedereen.
Ik ben net begonnen met syntax van de Database Abstraction Layer in Drupal 7 uit te pluizen, het is misschien een simpele vraag, misschien ook niet - maar ik raak even niet verder...

Ik heb 2 content types aangemaakt, de ene heet parent and de andere children. Ik heb colors aangemaakt welke een parent type is, verder maakte ik red, green en blue aan die allemaal van het children type zijn en via de References module gelinkt zijn aan colors (parent). Wat ik wil doen is een lijst maken waarin alle parents staan met erachter (tussen haakjes) het aan children, in dit geval bijvoorbeeld: colors (3).

Voorlopig heb ik dit al:

$result = db_query("SELECT nid, title FROM {node} WHERE type = :type", array(':type' => 'parent',));
foreach ($result as $record) {
print $record->title."
";
}
$number_of_rows = $result->rowCount();
print $number_of_rows;

Werkt prima, het resultaat is een lijst van de parents en hun totaal aantal. Maar hoe moet ik nu verder als ik Drupal het aantal children per parent wil laten tonen?

In PHP zou ik dat oplossen via JOIN/ON in een 'while' loop, maar, ik zit een beetje vast om alles om te zetten naar Drupal. Enige help -of wijze woorden- zou ik tenzeerste apprecieren! Ondertussen bekijk ik de docs op api.drupal nogmaals.

Alvast bedankt,
Sven

Drupalversie: 
7.x
Auteur: 
ziepe
afbeelding van boris sondagh
Door boris sondagh op 15 september, 2011 - 09:28

Ik durf niet te zeggen wat de code hiervoor is. Maar normaal is dit simpel te bereiken in Views.
Ook als je geen Views wil gebruiken, kan je daar wel de query bouwen en kijken naar de code die gegenereerd wordt, dat moet genoeg zij om verder mee te kunnen. Succes.

afbeelding van JDBI
Door JDBI op 16 september, 2011 - 01:48

Hallo,

Het is efficiënter om een deftige SQL query te schrijven die ineens de counts berekent, bvb

SELECT title,count(revision_id) FROM node left join field_data_field_children_parent as cp on node.nid=cp.field_children_parent_nid where type='parent' group by title

Dit geeft bvb een tabel
colors | 3
huisdieren | 2

Je moet wel opzoeken in welke tabellen je gegevens zijn opgeslagen in jouw geval. Je kan best de query testen in bvb phpMyAdmin en ze vervolgens omzetten volgens db_query syntax.

grts,
Johan

Bookmark and Share

Drupal is een geregistreerd merk van Dries Buytaert. | Powered by Pantheon.

Drupal.be/Drupal.nl is de website van de Nederlandstalige Drupalgemeenschap.