Yii Framework Forum: Come Operare Sul Db? - Yii Framework Forum

Jump to content

  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

Come Operare Sul Db? Rate Topic: ****- 1 Votes

#1 User is offline   franco.pentangeli 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 23
  • Joined: 04-October 12

Posted 09 October 2012 - 09:13 AM

Ciao a tutti,
da poco sto utilizzando Yii e sono qui a chiedervi un consiglio su come operare sul mio database mysql.
Ho una tabella ARTICOLI con tutte le info (prezzo, codice, descrizione,...).
Nella tabella MAGESE ho invece informazioni sulla disponibilità in magazzino (giacenza, prenotati, venduti,...).

Ho creato Model, Controller e View solo per gli ARTICOLI: come faccio ora a leggere le info della tabella MAGESE nella view di un singolo articolo? Effettuo una query semplicemente con php ?

Grazie!

Franco
0

#2 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 700
  • Joined: 03-October 12
  • Location:Ferrara

Posted 09 October 2012 - 09:15 AM

Per partire:

Hai già stabilito le relation nei due model ?
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#3 User is offline   franco.pentangeli 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 23
  • Joined: 04-October 12

Posted 09 October 2012 - 09:20 AM

View Postrealtebo, on 09 October 2012 - 09:15 AM, said:

Per partire:

Hai già stabilito le relation nei due model ?


ehm...no. Non saprei nemmeno come fare :S
0

#4 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 700
  • Joined: 03-October 12
  • Location:Ferrara

Posted 09 October 2012 - 09:26 AM

iniziamo da più indietro: hai creato, a mano o con gii, i due model, uno per articoli ed uno per magese ?

se si, il passo dopo è capire le relazioni. Questo articolo ti potrebbe essere utilissimo

in caso contrario, andiamo indietro ancora di più: leggiti le basi di come si usa yii
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#5 User is offline   franco.pentangeli 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 23
  • Joined: 04-October 12

Posted 09 October 2012 - 09:31 AM

View Postrealtebo, on 09 October 2012 - 09:26 AM, said:

iniziamo da più indietro: hai creato, a mano o con gii, i due model, uno per articoli ed uno per magese ?

se si, il passo dopo è capire le relazioni. Questo articolo ti potrebbe essere utilissimo

in caso contrario, andiamo indietro ancora di più: leggiti le basi di come si usa yii


Ho creato il model solo per gli articoli. Ora lo faccio per MAGESE e passo alla lettura dell'articolo che mi hai consigliato.

Che dire... grazie mille!
0

#6 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 700
  • Joined: 03-October 12
  • Location:Ferrara

Posted 09 October 2012 - 09:51 AM

come vedi anche io sono qui da poco e mi sto sia documentando tantissimo, sia facendo aiutare tantissimo. finchè riesco faccio la mia parte per gli altri.

Leggiti prima il primo articolo: la sequenza solitamente è:
creo il model di ogni oggetto coinvolto
creo il crud dell'oggetto di cui ho bisogno di fare inserimenti e visualizzazioni
creo le tabelle se gii non le ha azzeccate

chiedo sul forum ;) per sistemare la specifica query.
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#7 User is offline   franco.pentangeli 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 23
  • Joined: 04-October 12

Posted 09 October 2012 - 10:02 AM

View Postrealtebo, on 09 October 2012 - 09:51 AM, said:

come vedi anche io sono qui da poco e mi sto sia documentando tantissimo, sia facendo aiutare tantissimo. finchè riesco faccio la mia parte per gli altri.

Leggiti prima il primo articolo: la sequenza solitamente è:
creo il model di ogni oggetto coinvolto
creo il crud dell'oggetto di cui ho bisogno di fare inserimenti e visualizzazioni
creo le tabelle se gii non le ha azzeccate

chiedo sul forum ;) per sistemare la specifica query.


Perfetto. Ho creato model e CRUD di MAGESE (anche se mi serviranno solo nella view degli articoli). Ora provo ad impostare la relazione.
0

#8 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 336
  • Joined: 10-April 12

Posted 09 October 2012 - 03:54 PM

le due tabelle come sono collegate?
il db è mysql con engine myisam o innodb?

se è il secondo puoi impostare le relazioni già a livello di database, e gii quando ti genera le CRUD
ti imposta direttamente le relazioni.

se non è così puoi farlo a mano.

es: se Articoli ha un record collegato in MAGNESE
devi andare nel Model Articoli al metodo relations e imposti
public function relations()
    {
        return array(
            'magnese'=>array(self::HAS_ONE, 'Magnese', 'campo_collegato'),
        );
    }


con campo_collegato che sarebbe la chiave esterna di Magnese collegata alla chiave primaria di Articoli
0

#9 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 700
  • Joined: 03-October 12
  • Location:Ferrara

Posted 10 October 2012 - 07:06 AM

tra l'altro il consiglio è doppiamente buono, in quanto se non hai ancora fatto modifiche nei model puoi chiedere a Gii di ricreartele tenendo attiva l'opzione di creazione relazioni (non mi ricordo come si chiama) e, SE INNODB, ti crea le relation.

MyIsam non supporta le foreign key, per cui in questo caso devi crearle a mano, ma per me ti conviene per autodidattica crearle a mano, ti permetterà di capirle meglio, anche se inizialmente diventerai un po' scemo
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#10 User is offline   franco.pentangeli 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 23
  • Joined: 04-October 12

Posted 10 October 2012 - 08:10 AM

Grazie ancora per le altre info. Purtroppo il db è myisam.
Ho fatto tutti i passaggi richiesti ma non funziona probabilmente perchè, a livello di DB, non esite la chiave esterna nella tabella MAGESE... e purtroppo non posso modificare la struttura della tabella stessa(per tanti motivi).

Grazie davvero!
0

#11 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,987
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 10 October 2012 - 06:12 PM

View Postfranco.pentangeli, on 10 October 2012 - 08:10 AM, said:

Purtroppo il db è myisam.


Non puoi convertire in InnoDB?
0

#12 User is offline   zaccaria 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 2,232
  • Joined: 04-October 09
  • Location:Moscow

Posted 11 October 2012 - 12:45 AM

Tanto per chiarire: le relations funzionano perfettamente anche senza innoDB, semplicemente non vengono create di default.

Dai un occhio alla doc per le relations su come crearle a mano.
0

#13 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 700
  • Joined: 03-October 12
  • Location:Ferrara

Posted 11 October 2012 - 01:30 AM

Facciamo una cosa, visto che anche io ti ho consigliato l'articolo sulle relations: dopo che l'hai letto ci scrivi per bene la relazione tra tabella A e tabella B e ti spieghiamo dove e come fare le relations.

Non avere paura per il Db, non serve convertirlo. Le relation, come diceva zaccaria, funzionano anche senza avere le foreign key definite. L'unica cosa veramente fondamentale è avere la chiave primaria definita nelle due tabelle, ma immagino che un 'id' autoinc ce l'avrai
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#14 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 336
  • Joined: 10-April 12

Posted 11 October 2012 - 03:23 AM

io le ricreo tutte a mano, purtroppo a quanto vedo gii non supporta le relations su postgresql

poco male comunque, mi aiuta ad interrogarmi più volte sulla logica dell'applicazione.

buon lavoro ;)
0

#15 User is offline   franco.pentangeli 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 23
  • Joined: 04-October 12

Posted 29 October 2012 - 07:38 AM

View Postrealtebo, on 11 October 2012 - 01:30 AM, said:

Facciamo una cosa, visto che anche io ti ho consigliato l'articolo sulle relations: dopo che l'hai letto ci scrivi per bene la relazione tra tabella A e tabella B e ti spieghiamo dove e come fare le relations.

Non avere paura per il Db, non serve convertirlo. Le relation, come diceva zaccaria, funzionano anche senza avere le foreign key definite. L'unica cosa veramente fondamentale è avere la chiave primaria definita nelle due tabelle, ma immagino che un 'id' autoinc ce l'avrai


Ciao. Scusa per l'assenza degli ultimi giorni. Non ho più lavorato su quel progetto ed ho momentaneamente sospeso lo studio di Yii.
In ogni caso, da oggi riprendo.
Ecco la situazione:

Tabella ARTICOLI
ID | CODICE | DESCRIZIONE1 | ...altre colonne

Tabella MAGESE
ID | ART_CODICE | ESISTENZA | ...altre colonne


Al momento opero in questo modo, senza aver specificato alcuna relazione:
$disp = Yii::app()->db->createCommand()
    ->select('ESISTENZA,ORDINATO,IMPEGNATO')
    ->from('magese')
     ->where('ART_CODICE="'.$data->CODICE.'"')
    ->queryRow();



grazie!
0

#16 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 700
  • Joined: 03-October 12
  • Location:Ferrara

Posted 04 November 2012 - 11:17 AM

Diciamo che questo è il funzionamento semi-manuale, quasi come se usassi il comando mysql_query di php

Segui la strada di Yii.

Hai la tabella in DB? Si !

Hai creato il MODEL di ciascuna tabella ?
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#17 User is offline   franco.pentangeli 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 23
  • Joined: 04-October 12

Posted 06 November 2012 - 06:12 AM

View Postrealtebo, on 04 November 2012 - 11:17 AM, said:

Diciamo che questo è il funzionamento semi-manuale, quasi come se usassi il comando mysql_query di php

Segui la strada di Yii.

Hai la tabella in DB? Si !

Hai creato il MODEL di ciascuna tabella ?

si si! ho creato model e operazioni crud di ciascuna tabella
0

#18 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 700
  • Joined: 03-October 12
  • Location:Ferrara

Posted 06 November 2012 - 07:43 AM

bene !

Ora se non erro possiamo iniziare a creare l'interfaccia utente con form, filtro e lista, giusto ?

Per curiosità le due tabelle ARTICOLI e MAGESE come sono relazionate l'una all'altra ?

per esempio: magese.articoloId [n->1] articoli.id

Ad ogni modo, questo è il momento di creare il CRUD.
Vai in Gii e genera il CRUD per entrambi i model appena creati.

Ti consiglio questo intanto: http://www.yiiframew...start.first-app
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#19 User is offline   franco.pentangeli 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 23
  • Joined: 04-October 12

Posted 06 November 2012 - 08:55 AM

View Postrealtebo, on 06 November 2012 - 07:43 AM, said:

bene !

Ora se non erro possiamo iniziare a creare l'interfaccia utente con form, filtro e lista, giusto ?

Per curiosità le due tabelle ARTICOLI e MAGESE come sono relazionate l'una all'altra ?

per esempio: magese.articoloId [n->1] articoli.id

Ad ogni modo, questo è il momento di creare il CRUD.
Vai in Gii e genera il CRUD per entrambi i model appena creati.

Ti consiglio questo intanto: http://www.yiiframew...start.first-app


Ho generato il crud di entrambi i model.
Infatti finora ho proceduto in questo modo:
$disp = Yii::app()->db->createCommand()
    ->select('ESISTENZA,ORDINATO,IMPEGNATO')
    ->from('magese')
     ->where('ART_CODICE="'.$data->CODICE.'"')
    ->queryRow();


Il problema sta nel settare le relazioni e nel farle funzionare :S
Grazie!


Nel database MyIsam, ecco la situazione:
Tabella ARTICOLI
ID | CODICE | DESCRIZIONE1 | ...altre colonne

Tabella MAGESE
ID | ART_CODICE | ESISTENZA | ...altre colonne

In pratica la tabella MAGESE, che tiene traccia delle quantità in magazzino, contiene il CODICE dell'articolo.
0

#20 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 700
  • Joined: 03-October 12
  • Location:Ferrara

Posted 07 November 2012 - 09:21 AM

ora sono io a non capire: se generi il crud tramite GII, il SQL che hai postato inserito a cosa ti serve ? Gii avrà creato lista con filtro + form + altre cose già funzionanti, giusto? Non modificare quello che ha fatto gii prima di aver capito davvero come muoverti.

Yii fa quasi tutto in completo automatismo, filtri compresi.

A parte questo chiarimento, andiamo avanti.

Capisco quindi che MAGESE.ART_CODICE [ N - > 1 ] ARTICOLI.ID

Nella function rules del model di MAGESE devi inserire

return array(
		        "articolo" => array(self::BELONGS_TO, 'ARTICOLI', 'ART_CODICE' ),
		);


A questo punto nella view admin di magese avrai una cgrid view con una sequenza di colonne, giusto ?

Me la puoi copia/incollare per favore?

per vedere il nome dell'articolo invece dell'id puoi fare tipo cosi: sostituisci

colums = array (
 ....
 ART_CODICE,
 .....
)


 array(
                'name'=>'ART_CODICE',
                'value'=>'data->articolo->DESCRIZIONE1',
        ),



Tieni conto che Yii è piuttosto CASE-SENSITIVE, se lavori con le maiuscole metti anche i nomi delle relazioni e i vari 'name' in maiuscolo

A questo punto avrai la descrizione dell'articolo di magazzino al posto del suo id nella vista admin di MAGESE.
Se siamo arrivati fino a qui, il prossimo passo sono prima il filtro e poi l'ordinamento.
Ma dimmi se sei riuscito a seguirmi fino a qui. Senza il codice sotto è un poco fatica...

In ogni modo, carica uno screenshot di cosa eventualmente non va su imageshack o similari e linkalo, così mi è più facile aiutarti.
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

Share this topic:


  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users