Sto cercando di elencare alcuni dati tramite il widget Kartik GridView
in yii2
utilizzando le relazioni. Ho queste tabelleISCRIVITI a più tabelle utilizzando le relazioni in Yii2
staffs
CREATE TABLE IF NOT EXISTS `staffs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(250) CHARACTER SET utf8 DEFAULT NULL,
`department_id` int(11) DEFAULT NULL,
`designation_id` int(11) DEFAULT NULL,
`username` varchar(50) CHARACTER SET utf8 DEFAULT NULL,
`emailid` varchar(250) CHARACTER SET utf8 DEFAULT NULL,
`staffrights` tinyint(2) DEFAULT '0',
`staffstatus` tinyint(2) DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
designations
CREATE TABLE IF NOT EXISTS `designations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`designname` varchar(150) NOT NULL,
`designation_group_id` varchar(250) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
designation_group
CREATE TABLE IF NOT EXISTS `designation_group` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`group_name` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
designations
tavolo è legato alla designation_group
da designations.designation_group_id
. La tabella designations
avrà uno o più valori separati da una virgola, di designation_group.id
.
designations
tabella è correlata alla tabella di personale da staffs.designation_id =designations.id
. In Staffs
Modello Ho aggiunto i rapporti come questo
public function getDesignations() {
return $this->hasOne(Designations::className(), ['id' => 'designation_id']);
}
e sta lavorando perfetto. Ma la relazione per designation_group
ho provato in questo modo:
public function getDesgroupstaffs(){
return $this->hasOne(Designations::className() , ['id' => 'id'])
->from(Designationgroup::tableName()) ;
}
ma doesnt dare il risultato previsto. Come si può unire la tabella designation_group
in modo che sia possibile visualizzare anche tutti i gruppi di design associati allo staff? Voglio mostrare come, la prima colonna della visualizzazione griglia sarà denominazioni, mentre il filtro della stessa colonna dovrebbe essere DesignationGroup.group_name. Se è selezionato qualsiasi nome_gruppo, mostrerà i dati del personale associato a quel nome di gruppo
uso yii2 joinWidth come ... 'Modello :: find() -> joinWith ([ 'Relation Nome']) -> tutti();' riferiscono questo collegamento [Join With Relation] (http://www.yiiframework.com/doc-2.0/guide-db-active-record.html) – vishuB
La relazione non desgroupstaffs dà il gruppo di designazione – user7282
questa relazione è sbagliata '[ 'id' => 'id'] 'nella funzione' getDesgroupstaffs() ' – vishuB