Yii Framework Forum: prendere i dati delle relations - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

prendere i dati delle relations Prendere i dati che derivano dalle relations, come? Rate Topic: -----

#1 User is offline   tune 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 75
  • Joined: 27-March 12

Posted 20 June 2012 - 05:26 AM

Ciao ragazzi,
domanda "concettuale": a seguito della chiamata a "findByPk()"
$row = Utenti::model()->findByAttributes( 'username_pippo' );

mi torna un oggetto del model (User in questo caso), ho notato che da questo oggetto posso direttamente "prendere" i valori degli attributi diretti, per esempio "username", "email" etc etc...
$row->password

==>ma se volessi prendere nello stesso modo i dati che sono indirettamente legati tramite le "relations" ?

...anche se esiste una guida o qualcosa di simile

Grazie in anticipo!!
0

#2 User is offline   Rajith R 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 550
  • Joined: 20-April 11
  • Location:Kochi , Kerala, India

Posted 20 June 2012 - 05:46 AM

$row = Utenti::model()->findByAttributes(array('username'=>'username_pippo'));

Rajith Ramachandran,
Wiwo inc.
| Mobile: 919995504508
0

#3 User is offline   tune 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 75
  • Joined: 27-March 12

Posted 20 June 2012 - 05:51 AM

Grazie per l'interessamento Rajith R,

in effetti ho postato male la funzione io già uso correttamente:
$row = Utenti::model()->findByAttributes( array('desc_nome_utente'=>$this->username) );


credo di essermi espresso male, il mio problema non sta nel findByPk ma dall'oggetto che da questa funzione ne ritorna,
o meglio, ad esempio ho provato a var_dump-are $row e ho una sfilza di roba che ovviamente include tutto e di +...

ma come è possibile prendere i dati che scaturiscono dalle relazioni?
0

#4 User is offline   Rajith R 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 550
  • Joined: 20-April 11
  • Location:Kochi , Kerala, India

Posted 20 June 2012 - 05:56 AM

in realtà ciò che è il tuo problema?
Rajith Ramachandran,
Wiwo inc.
| Mobile: 919995504508
0

#5 User is offline   tune 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 75
  • Joined: 27-March 12

Posted 20 June 2012 - 06:07 AM

ok, allora:
  • ho un oggetto del model user
  • questo model ha delle relations con altri model, (ad esempio Posts model)
  • chiamando findByPk mi torna l'oggetto User trovato dal DB
e fin qui ok.

problem: avendo le relations con il model dei Posts, come è possibile prendere le informazioni dei posts direttamente dall'oggetto User?

$row = Utenti::model()->findByAttributes( array('desc_nome_utente'=>$this->username) );
$row->password // i've got a password data, ok.
$row->posts // how can i directly retrieve some information about the posts model that is related with the user model?

0

#6 User is offline   Rajith R 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 550
  • Joined: 20-April 11
  • Location:Kochi , Kerala, India

Posted 20 June 2012 - 06:10 AM

is posts is another model?

then u need to use findall with join..
Rajith Ramachandran,
Wiwo inc.
| Mobile: 919995504508
0

#7 User is offline   Rajith R 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 550
  • Joined: 20-April 11
  • Location:Kochi , Kerala, India

Posted 20 June 2012 - 06:13 AM

findAll->with(relation name in posts)-> ............


like this..

in questo modo ..
Rajith Ramachandran,
Wiwo inc.
| Mobile: 919995504508
0

#8 User is offline   Rajith R 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 550
  • Joined: 20-April 11
  • Location:Kochi , Kerala, India

Posted 20 June 2012 - 06:15 AM

ricerca di esempi findAll->with()
Rajith Ramachandran,
Wiwo inc.
| Mobile: 919995504508
0

#9 User is offline   tune 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 75
  • Joined: 27-March 12

Posted 20 June 2012 - 06:31 AM

ok!
grazie!
proverò e posterò qui se la cosa è stata risolta o meno!

Grazie Rajith!
0

#10 User is offline   Rajith R 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 550
  • Joined: 20-April 11
  • Location:Kochi , Kerala, India

Posted 20 June 2012 - 06:54 AM

okay...
Rajith Ramachandran,
Wiwo inc.
| Mobile: 919995504508
0

#11 User is offline   tune 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 75
  • Joined: 27-March 12

Posted 20 June 2012 - 09:19 AM

alla fine per ottenere i dati relazionati desiderati ho dovuto usare il seguente modo, che capisco bene non essere proprio nei canoni, ma è stato l'unico modo, poi visti i tempi stretti ho dovuto adottare una soluzione di "basso livello" andando a toccare direttamente la classe "CDbCommand" :
		$rs = Yii::app()->db->createCommand()
			->setFetchMode(PDO::FETCH_OBJ)
			->select('r.sequ_idruolo,r.codi_codruolo,f.codi_idfunzionalita')
			->from(	'd_utenti u,
					d_ruoli_utenti ru,
					d_ruoli r,
					d_ruoli_funzionalita rf,
					d_funzionalita f')
			->where(array(
							'and',
							'u.cod_codice_fiscale = :codice_fiscale',
							'ru.cod_codice_fiscale = u.cod_codice_fiscale',
							'ru.sequ_id_ruolo_utente = r.sequ_idruolo',
							'rf.fk_sequ_idruolo = r.sequ_idruolo',
							'rf.fk_codi_idfunzionalita = f.codi_idfunzionalita'),
					array( 	':codice_fiscale'=>$user->cod_codice_fiscale))
			->queryAll();


se conoscete una soluzione di livello + alto vi prego consigliatemela pure!

Domanda finale:
Ma se ho un model relazionato con altri, qual'è la "best-practice" per ottenere tutti i dati compresi quelli relaizionati appunto?

...se avete guide e/o suggerimenti vi ringrazierò all'infinito :D
0

#12 User is online   sensorario 

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

Posted 20 June 2012 - 11:39 AM

Provo a fare un esempio.

Ottengo un oggetto da una query:

    $utente = Utente::model()->findByPk(33);


Supponiamo di avere un campo regione_id nella tabella utente. E supponiamo di avere una relazione regione che lega la tabella utente alla tabella regione:

    echo $utente->regione->nome;


Vuoi accedere ad una chiave esterna anche di regione? Supponiamo che la chiave sia qualcosa_id. E che esita quindi una tabella qualcosa, e che il model regione abbia una relazione 'qualcosa'

    echo $utente->regione->qualcosa->nome;


e così via
0

#13 User is offline   tune 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 75
  • Joined: 27-March 12

Posted 21 June 2012 - 05:01 AM

Grazie!
che poi è come avevo fatto all'inizio, come sospettavo,
l'errore quindi dovrà stare nello specificare le relations...
0

#14 User is offline   tune 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 75
  • Joined: 27-March 12

Posted 22 June 2012 - 08:07 AM

Ciao ho un'ultima domanda riguardo le relations,

- è possibile mettere in relazione 2 tabelle che in comune non hanno ForeignKeys, ma solo applicativamente?...oppure le ralations hanno bisogno NECESSARIAMENTE di una relazione a livello di DB sotto?

mi spiego: tra 2o3 tabelle che hanno una relazione definita già in SQL le relations avvengono senza problemi come da "manuale"...mentre se volessi associare 2tabelle che non sono associate a livello di DB?

come al solito Grazie in anticipo!
0

#15 User is offline   tune 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 75
  • Joined: 27-March 12

Posted 22 June 2012 - 09:22 AM

[in riferimento al motivo principale dl'apertura di questo post]
ok ho "scoperto" perkè il server mi diceva questo:
  //*** OUTPUT: Trying to get property of non-object 
   	$utente = new Utenti();
		$user = $utente->model()->findByPk($uid);
		print $user->ruoliUtentis->sequIdRuoloResponsabilita->desc_ruolo;
   		


specifico che l'errore sta al 100% alla relazione "ruoliUtentis" che è "HAS_MANY", per scrupolo l'ho cambiata in "HAS_ONE"
e il tutto funziona come dovere!...solo che cè un piccolo particolare, che un utente può avere + ruoli e quindi mi SERVE HAS_MANY...alchè:

- come si fà a prendere i dati da una relazione HAS_MANY seguendo la sintassi $oggetto->relazione_has_many->dato ?
- devo per caso cambiare sintassi o cosa?

Grazie anticipatamente...scusate ma sto uscendo pazzo con questa relation... :o
0

#16 User is online   sensorario 

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

Posted 22 June 2012 - 09:27 AM

Apri un altro thread. Altrimenti ci leggiamo solo io e te =). E gli altri, se sono interessati, non posso dare o ricevere conoscenza =).
0

Share this topic:


Page 1 of 1
  • 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