Objets métiers: Difference between revisions

→‎Lien entre Objets métiers: Exemple mis à jour pour les versions plus récentes de Dolibarr où load_object_linked est remplacé par fetchObjectLinked
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