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
Page 1 of 1
CRUD per MANY_MANY con droplist
#3
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:
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')) ?>
#4
Posted 04 August 2011 - 09:21 AM
zaccaria, 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:
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!!!
#5
Posted 09 August 2011 - 02:11 AM
zaccaria, 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:
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 ...
#6
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....
<?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....
#7
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
<?php echo $form->dropDownList($model, 'id_related_release', CHtml::listData(Release::model()->findAll(), 'idrelease', 'release_name')) ?>
con le parentesi =)))
grazie
Share this topic:
Page 1 of 1

Help














