Yii Framework Forum: CRUD per MANY_MANY con droplist - Yii Framework Forum

Jump to content

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

CRUD per MANY_MANY con droplist Rate Topic: -----

#1 User is offline   abioneperhobby 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 03-August 11

Posted 03 August 2011 - 09:31 AM

Ciao a tutti,

ho cercato di arrangiarmi cercando nella documentazione tuttavia non sono riuscito a risolvermi un problema.

si suppone che io abbia una tabella utenti e una tabella attività

per gestire la relazione n a n ho una tabella che si chiama utenti_attivita

la tabella attivita ha una chiave esterna verso attività e una chiave esterna verso utenti. queste coppie di valori mi permettono di fare in modo che un utente abbia n attività e n utenti siano associati ad una attività

mi serve gestire le associazioni tra queste due tabelle tramite interfaccia.

ho creato il Crud di attivita e il crud di utenti . Ottimo.

se creo il crud di utenti_Attivita questo mi crea un inserimento di id, ma chiaramente questo non è leggibile ne gestibile : io vorrei che al posto degli id ci fossero delle drop list che hanno come label i dati associati.

fosse php puro, con una inner join unirei le due tabelle e non ci sarebbe alcun problema. ma con yii come faccio a fare un crud su una tabella che gestisce relazioni?

grazie della gentile attenzione.

Andrea
0

#2 User is offline   markux 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 106
  • Joined: 26-November 10
  • Location:Grosseto

Posted 04 August 2011 - 02:38 AM

http://www.yiiframew...ng-relationship

http://www.yiiframew...many#entry47769
0

#3 User is offline   zaccaria 

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

Posted 04 August 2011 - 04:04 AM

Quando crei il crud hai 2 textbox, e vuoi sostuirle con due dropdown list, giusto?

Allora al posto della textbox mettici:

<?php echo $this->dropDownList($model, 'id_attivita', CHtml::listData(Attivita::model()->findAll, 'id', 'descrizione')) ?>
<?php echo $this->dropDownList($model, 'id_utenti', CHtml::listData(Utenti::model()->findAll, 'id', 'nome')) ?>

1

#4 User is offline   abioneperhobby 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 03-August 11

Posted 04 August 2011 - 09:21 AM

View Postzaccaria, on 04 August 2011 - 04:04 AM, said:

Quando crei il crud hai 2 textbox, e vuoi sostuirle con due dropdown list, giusto?

Allora al posto della textbox mettici:

<?php echo $this->dropDownList($model, 'id_attivita', CHtml::listData(Attivita::model()->findAll, 'id', 'descrizione')) ?>
<?php echo $this->dropDownList($model, 'id_utenti', CHtml::listData(Utenti::model()->findAll, 'id', 'nome')) ?>



fantastico, ti ringrazio molto!!!
0

#5 User is offline   abioneperhobby 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 03-August 11

Posted 09 August 2011 - 02:11 AM

View Postzaccaria, on 04 August 2011 - 04:04 AM, said:

Quando crei il crud hai 2 textbox, e vuoi sostuirle con due dropdown list, giusto?

Allora al posto della textbox mettici:

<?php echo $this->dropDownList($model, 'id_attivita', CHtml::listData(Attivita::model()->findAll, 'id', 'descrizione')) ?>
<?php echo $this->dropDownList($model, 'id_utenti', CHtml::listData(Utenti::model()->findAll, 'id', 'nome')) ?>



scusami ... mi dispiace disturbarti ancora ... anche in altre guide dicono di usare findAll, ma findAll non è definito nel modello della mia tabella del database... e quindi non funziona ...

le operazioni che conduco sono

creo il modello per la tabella
creo il crud per la tabella

in questo caso mi serve per una relazione 1 : n , dove ad esempio un progetto ha un cliente associato, allora nel _form.php della view dei progetti scrivo

//<?php echo $form->textField($model,'customer_related'); ?>
<?php echo $this->dropDownList($model, 'idcustomer', CHtml::listData(Customer::model()->findAll, 'idcustomer', 'customer_name')) ?>

tuttavia però ottengo :

CException

Property "Customer.findAll" is not defined.

in effetti nel modello di Customer non esiste la definizione di findAll alchè ho iniettato


function findAll($condition='',$params=array())
{
Yii::trace(get_class($this).'.findAll()','system.db.ar.CActiveRecord');
$criteria=$this->getCommandBuilder()->createCriteria($condition,$params);
return $this->query($criteria,true);
}

all'interno del modello ma non funziona e mi sa che sto facendo macello ......

grazie scusami ...
0

#6 User is offline   abioneperhobby 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 03-August 11

Posted 10 August 2011 - 08:48 AM

io ho sostituito

<?php echo $form->labelEx($model,'id_related_release'); ?>
<?php echo $form->textField($model,'id_related_release',array('size'=>45,'maxlength'=>45)); ?>
<?php echo $form->error($model,'id_related_release'); ?>

con

<?php echo $form->labelEx($model,'id_related_release'); ?>
<?php echo $this->dropDownList($model, 'id_related_release', CHtml::listData(Project::model()->findAll, 'idproject', 'project_name')) ?>
<?php echo $form->error($model,'id_related_release'); ?>

posto che il mio modello Project contiene

* @property integer $idproject
* @property string $project_name

e che estende, per default, CActiveRecord ,

non capisco ancora perchè ottenga l'errore

Property "Project.findAll" is not defined.


potresti aiutarmi ancora, per cortesia? grazie....
0

#7 User is offline   abioneperhobby 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 03-August 11

Posted 10 August 2011 - 11:03 AM

il problema stava nel fatto che findAll non è ne proprietà ne un getter ... andava scritto cosi

<?php echo $form->dropDownList($model, 'id_related_release', CHtml::listData(Release::model()->findAll(), 'idrelease', 'release_name')) ?>


con le parentesi =)))

grazie
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