17
edits
PolyglotBot (talk | contribs) m (Import interlang links (links to translated versions of this page in other languages) from origin English page "Business_Objects".) |
(→Lien entre Objets métiers: Exemple mis à jour pour les versions plus récentes de Dolibarr où load_object_linked est remplacé par fetchObjectLinked) Tag: 2017 source edit |
||
| Line 31: | Line 31: | ||
Certains objets métiers sont liés les uns aux autres. Ceci est fait dans Dolibarr via la [[Table llx_element_element]]. Mais vous n'avez pas à lire cette table pour récupérer les objets liés à un autre. | Certains objets métiers sont liés les uns aux autres. Ceci est fait dans Dolibarr via la [[Table llx_element_element]]. Mais vous n'avez pas à lire cette table pour récupérer les objets liés à un autre. | ||
Voici la portion de code qui montre comment faire cela: | Voici la portion de code qui montre comment faire cela: | ||
Dolibarr 3.1 et versions ultérieures : | |||
<source lang="php"> | |||
$commande = new Commande($db); | |||
$commande->fetch($commande_id); | |||
// on veut récupérer des factures à partir d’une commande dont on connaît l’ID | |||
$result = $commande->fetchObjectLinked($commande->id, 'commande', null, 'facture'); | |||
if ($result <= 0) { | |||
// erreur | |||
} | |||
// important : les tableaux créés sont associatifs : leurs clés sont des rowid de llx_element_element. | |||
// FAUX (renverra NULL): | |||
$facture_id = $commande->linkedObjectsIds['facture'][0] | |||
// CORRECT: | |||
$facture_id = array_values($commande->linkedObjectsIds['facture'])[0] | |||
// MIEUX (permet de gérer le cas où il y aurait plus d’une facture) : | |||
foreach ($commande->linkedObjectsIds['facture'] as $element_element_id => $facture_id) { | |||
// ... | |||
} | |||
</source> | |||
Avant Dolibarr 3.1 : | |||
<source lang="php"> | <source lang="php"> | ||
// This load the array linked_object with objects that link to this one | // This load the array linked_object with objects that link to this one | ||
edits