estrarre dati in tabelle con relazione

Ciao A tutti

sono veramente alle prime armi con yii e sto impazzendo per fare una cosa semplicissima , sono riuscito creare la parte di inserimento con una dropdown con valori presi da altra tabella . ma non riesco a visualizzare sulla index view ecc. il valore selezionato , mi restituisce sempre l’id selezionato .

Mi sembra di aver letto in giro che YII vuole la prima colonna delle tabelle sempre nominata con ID può essere quello ?

Grazie a tutti

Frank

Mostra il codice incriminato :)

Ciao In realtà credo di aver risolto , solo che non sò se è la via corretta, sui tutorial che ho visto la facevano più semplice .

questa la struttura del db

– Struttura della tabella CONCORRENTI

CREATE TABLE CONCORRENTI (

id int(4) NOT NULL,

ID_AZIENDA int(3) NOT NULL,

CONCORRENTE varchar(40) NOT NULL,

ID_AGENTE int(3) NOT NULL,

COMMENTO varchar(1000) DEFAULT NULL,

NOTE varchar(1000) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

– Indici per le tabelle scaricate

– Indici per le tabelle AGENTI

ALTER TABLE AGENTI

ADD PRIMARY KEY (id);

– Indici per le tabelle CONCORRENTI

ALTER TABLE CONCORRENTI

ADD PRIMARY KEY (id),

ADD KEY ID_AZIENDA (ID_AZIENDA),

ADD KEY ID_AGENTE (ID_AGENTE);

– AUTO_INCREMENT per le tabelle scaricate

– AUTO_INCREMENT per la tabella AGENTI

ALTER TABLE AGENTI

MODIFY id int(3) NOT NULL AUTO_INCREMENT;

– AUTO_INCREMENT per la tabella CONCORRENTI

ALTER TABLE CONCORRENTI

MODIFY id int(4) NOT NULL AUTO_INCREMENT;

– Limiti per le tabelle scaricate

– Limiti per la tabella CONCORRENTI

ALTER TABLE CONCORRENTI

ADD CONSTRAINT FK_AGENTI_CONCORRENTI FOREIGN KEY (ID_AGENTE) REFERENCES AGENTI (id),

ADD CONSTRAINT FK_AZIENDA_CONCORRENTI FOREIGN KEY (ID_AZIENDA) REFERENCES AZIENDA (ID_AZIENDA);

queste le modifiche su concorrentisearch.php

in pratica sulla funzione search ho sostituito la search di default :

public function search($params)

{


    //$query = CONCORRENTI::find();


    //$query = Employee::find()->leftJoin('team','employee.team_id=team.id')->with('Team');


    $query = CONCORRENTI::find()->leftJoin('AGENTI','CONCORRENTI.ID_AGENTE=AGENTI.id')->with('iDAGENTE');


   // print_r($query)

questa la funzione che ho aggiunto a concorrenti.php

public function getEmployeeTypeName() {

   // print_r($this);


    return $this->iDAGENTE->AGENTE_NOME." ".$this->iDAGENTE->AGENTE_COGNOME;


    //return $this->employeeType->name;


}

e questo il richiamo sulla index.php sotto la view di concorrenti

<?php Pjax::begin(); ?> <?= GridView::widget([

    'dataProvider' =&gt; &#036;dataProvider,


    'filterModel' =&gt; &#036;searchModel,


    'columns' =&gt; [


        ['class' =&gt; 'yii&#092;grid&#092;SerialColumn'],





        'id',


        'ID_AZIENDA',


        'CONCORRENTE',


        'EmployeeTypeName',


        'COMMENTO',


        //'AGENTI.AGENTE_COGNOME',


        // 'NOTE',





        ['class' =&gt; 'yii&#092;grid&#092;ActionColumn'],


    ],


]); ?&gt;

secondo te è corretto o c’è un via più semplice ?

grazie per la tua disponibilità

In effetti mi sembra un po’ una complicazione ma dipende poi che altro deve fare quest’applicazione.

Qui ci sono un po’ di esempi

http://www.yiiframework.com/wiki/621/filter-sort-by-calculated-related-fields-in-gridview-yii-2-0/