Bonjour j'ai réussi à faire une requète union , mais je me heurte à un autre souci ,c'est que le nom du virtual field disparaît quand je mets mes conditions .
Voici mon code de mon model
$db = $this->getDataSource();
$subQuery = 'AdminActu.id IN ('. $actuchoix .')';
$Query = $subQuery;
$Query .= ' UNION ';
$subQuery = $db->buildStatement(
array(
'fields' => array('AdminActu.title','AdminActu.introtext','AdminActu.id','AdminActu.created_by'),
'table' => $db->fullTableName($this),
'alias' => 'AdminActu',
'limit' => null,
'offset' => null,
'joins' => array(),
'conditions' => array('AdminActu.id !='=>$actuchoix),
'order' => null,
'group' => null
),
$this->AdminActu
);
$Query .= $subQuery ;
$subQueryExpression = $db->expression($Query);
$conditions] = $subQueryExpression;
$actus=$this->find('all',array(
'fields' => array('AdminActu.title','AdminActu.introtext','AdminActu.id','AdminActu.created_by'),
'contain' => array(
'HomeActu.conditions'=>array(
'OR'=>array('HomeActu.date_end >= '.$date,
'HomeActu.date_end' => '0000-00-00'))),
'conditions'=> $conditions,
'alias'=>'AdminActu',
'limit' =>$nbr_actus
));
return $actus;
voici le résultat
(
[0] => Array
(
[0] => Array
(
[title] => ouah c'est le dernier
[introtext] => <p><img src="images/joomla_green.gif" border="0" alt="" />vbnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn</p>
[id] => 1
[created_by] => 42
)
[HomeActu] => Array
(
)
)
si je retire le $conditions ma réponse mets le AdminActu sinon non :(
Perso, je te conseille de passer par
$this->Model->query("
(SELECT AdminActu.title,AdminActu.introtext,AdminActu.id,AdminActu.created_by FROM adminactus WHERE id=1 LIMIT 1)
UNION
(SELECT mes champs FROM homactus LIMIT 1)");
Surtout si tu as déjà construit ta requête sql.
ok, déjà essayé
$actus=$this->query("SELECT Adminactu.title,AdminActu.introtext,AdminActu.id FROM msv5w_content AS AdminActu WHERE Adminactu.id IN (".$actuchoix.") UNION SELECT Adminactu.title,AdminActu.introtext,AdminActu.id AS AdminActu FROM msv5w_content AdminActu WHERE Adminactu.id NOT IN (".$actuchoix.") LIMIT ".$nbr_actus." ");
j'ai le même un array en chiffre ,pas exploitable si?
que je l'inclu dans le controller ou dans le modèle d'ailleurs.
et j'ai une sous condition par rapport à des dates ... :(
bon j'ai la nette impression que quand on change un peu la requête avec union on perd la possibilité du virtual field , si qqn a une info contraire , je suis preneur .
Le souci ce n'est pas l'appel car il suffit que je mette [0] mais la liaison hasOne et belongsTo qui ne fonctionne plus :/
re,si quelqu'un sait faire une différence pour remettre le bon nom du virtual field (afterfind ou un set qqe chose ?)
je suis toujours preneur