À l'aide sur les jointures automatiques de SPIP !

Super. Avec l’ajout de ce code, <BOUCLE(AGENCES){agence_augmentee}> devient équivalent à la <BOUCLE(AGENCES spip_agences_details)> désirée ; c’est ça ?

Bonjour @JLuc, c’est exactement ça, ainsi depuis une boucle <BOUCLE(AGENCES){agence_augmentee}>, je peux accéder à tous les champs (non homonymes) présents dans l’objet AGENCES_DETAILS.

Cool.
De la même manière avec ce critère tu peux certainement créer un vrai JOIN.

Yes, mais pas encore compris les subtilités de l’écriture du join version SPIP :wink:

Je garde ce petit plaisir pour une prochaine fois !

Ouais c’est pas évident, mais je me dis que c’est plus simple à faire dans un critère que dans la table de déclaration d’un objet, car dans le critère on est une étape d’interprétation plus près du MYSQL de base final…

Bon, finalement, j’ai pu aboutir !

Voici pour les suivants, une solution à base de déclaration d’un critère spip, permettant d’effectuer un LEFT JOIN.

Contexte : enrichir une BOUCLE ENTREPRISES (spip_entreprises) en y adjoignant une table ENTREPRISES_DETAILS partageant une même clef primaire (id_entreprise) que la table mère de la boucle :

function critere_entreprise_augmentee_dist($idb, &$boucles, $crit) {
	
	$boucle = &$boucles[$idb];
	
	$boucle->from['entreprises_details'] = 'spip_entreprises_details';
	$boucle->from_type['entreprises_details'] = 'LEFT';
	$boucle->join['entreprises_details']= array(
		"'entreprises'",
		"'id_entreprise'",
		"'id_entreprise'"
	);	
	
}
2 « J'aime »

Super classe du feu de la queue de SPIP !

Hop dans la doc : Créer un critère pour une jointure - Programmer avec SPIP 4
Merci pour ces partages

1 « J'aime »

Dans une situation similaire, pour pouvoir non seulement accéder aux champs mais aussi utiliser un critère portant sur un champ de la table jointe, j’ai dû ajouter l’équivalent de $boucle->jointures[] = 'entreprises_details'; dans le critère.