Salve ragazzi sono nuovo di yii e mi sono subito imbattuto in un rompi capo.
Ho queste tabelle:
CREATE TABLE IF NOT EXISTS `clienti` (
`id_cliente` int(11) NOT NULL AUTO_INCREMENT,
`nome_categoria` varchar(100) NOT NULL,
`nome_struttura` varchar(100) NOT NULL,
`regione_sociale` text NOT NULL,
`p_iva` text NOT NULL,
`via` text NOT NULL,
`citta` text NOT NULL,
`provvincia` varchar(3) NOT NULL,
`cap` varchar(5) NOT NULL,
`telefono` text NOT NULL,
`fax` text NOT NULL,
`cellulare` text NOT NULL,
`sito` text NOT NULL,
`email` text NOT NULL,
`note` text NOT NULL,
`persona_riferimento` text NOT NULL,
`codice_fiscale` char(16) NOT NULL,
`img_principale` text NOT NULL,
`img_1` text NOT NULL,
`img_2` text NOT NULL,
`img_3` text NOT NULL,
`img_4` text NOT NULL,
PRIMARY KEY (`id_cliente`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
e
CREATE TABLE IF NOT EXISTS `pubblicita` (
`tipo_pubblicita` varchar(100) NOT NULL,
`prezzo` float NOT NULL,
`durata` int(11) NOT NULL,
`num_max` int(11) NOT NULL,
PRIMARY KEY (`tipo_pubblicita`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
e
CREATE TABLE IF NOT EXISTS `clienti_pubblicita` (
`tipo_pubblicita` varchar(100) NOT NULL,
`id_cliente` int(11) NOT NULL,
PRIMARY KEY (`tipo_pubblicita`,`id_cliente`),
KEY `id_cliente` (`id_cliente`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
come noterete tra clienti e pubblicita ce una relazione molti a molti che giustamente gii nella classe clienti ha tradotto in questa maniera:
'pubblicitas' => array(self::MANY_MANY, 'Pubblicita', 'clienti_pubblicita(id_cliente, tipo_pubblicita)'),
mentre nella classe pubblicita
'clientis' => array(self::MANY_MANY, 'Clienti', 'clienti_pubblicita(tipo_pubblicita, id_cliente)'),
fin qui tutto bene… il problema sorge quando vado a creare questo metodo :
public function getClienti_pubblicita($tipo_pubblicita){
$cliente= Clienti::model()->with(array(
'pubblicitas'=>array(
'select'=>'clienti.nome_struttura,clienti.img_principale',
'joinType'=>'INNER JOIN',
'condition'=>'clienti_pubblicita.tipo_pubblicita='+$tipo_pubblicita+'or clienti_pubblicita.tipo_pubblicita="all_inclusive"',
),
))->findAll();
return new CActiveDataProvider($this, array(
'cliente'=>$cliente,
));
}
l’errore è questo:
Active record "Pubblicita" is trying to select an invalid column "clienti.nome_struttura". Note, the column must exist in the table or be an expression with alias.
Dove sbaglio?