Fork me on GitHub

Rapport de message :*
 

getByLink()

Titre du sujet : getByLink()
par bguegan sur 04/08/2014 12:27:11

Bonjour,

Je développe un module pour xoops2.6.0beta3 ... En effet, je prépare l'avenir. J'ai un soucis avec la fonction getByLink() ... En fait, la requête SQL est correcte, mais le résultat dans l'objet généré est lié uniquement à la première table.

Voici les tables SQL :
CREATE TABLE sequencebuilder_description (
  
desc_id         smallint(3unsigned    NOT NULL auto_increment,
  
desc_name       varchar(255)            NOT NULL DEFAULT '',
  
desc_desc       text,
  
desc_order      smallint(3unsigned    NOT NULL default '0',
  
desc_display    tinyint(1unsigned     NOT NULL default '0',
  
PRIMARY KEY (desc_id),
  
KEY sort (desc_orderdesc_name)
ENGINE=MyISAM;

CREATE TABLE  sequencebuilder_descriptiontexte (
  
texte_id int (8)   NOT NULL  auto_increment,
  
texte_txt text NULL,
  
desc_id int (5)   NOT NULL default '0',
  
elem_id int (5NOT NULL default '0',
  
PRIMARY KEY (texte_id),
  
KEY desc_id (desc_id),
  
KEY elem_id (elem_id)
ENGINE=MyISAM;


Et j'ai un Handler sur les tables faits via un fichier /class/helper.php
/**
     * @return SequencebuilderDescriptionsHandler
     */
    
public function getHandlerDescriptions()
    {
        return 
$this->getHandler('description');
    }
    
/**
     * @return SequencebuilderDescriptionsHandler
     */
    
public function getHandlerDescriptionsTexte()
    {
        return 
$this->getHandler('descriptiontexte');
    }


Je souhaite faire cette requête SQL (copié/collé du résultat venant de PhpMyadmin) le code fonctionne donc à moitié :
SELECT desc_namedesc_desctexte_txto.texte_id
FROM x4b9_sequencebuilder_descriptiontexte o
LEFT JOIN x4b9_sequencebuilder_description l ON o
.desc_id l.desc_id


Via le code suivant :
$related_Handler $helper->getHandlerDescriptionsTexte();
$related_Handler->table_link $related_Handler->db->prefix('sequencebuilder_description');
$related_Handler->field_link 'desc_id'// champ de la table en jointure
$related_Handler->field_object 'desc_id';    // champ de la table courante
$val=array('desc_name','desc_desc','texte_txt');

// Criteria
$criteria_label = new CriteriaCompo();
$criteria_label->add(new Criteria('l.desc_display'true'='));
    
$descriptions_label $related_Handler->getByLink($criteria_label$valtrue);


Le résultat me donne uniquement des champs liés à la première table, or la requête SQL est bonne et elle me donne ceci (elle apparaît dans la liste des requêtes du débogueur sans erreurs !! De plus je la teste sous PhpMyadmin via un copie/collé), le résultat est bon :

desc_name    desc_desc    texte_txt    texte_id
Santé    Important 
!    111    1
Effet sur le squellette        revu    2
Muscles    Important pour chaque posutr    333    3
Santé    Important 
!    1111    4
Muscles    Important pour chaque posutr    2222    5
Effet sur le squellette        3333    6


Mais dans l'objet généré RIEN ! Je n'y comprends plus rien pour le coup ... Quelqu'un a t-il une bonne idée ?

Merci de vos réponses,
Bruno


Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

58 Personne(s) en ligne (45 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 58 | Plus ...