我正在開發一個帶有Yii2框架的Web應用程序,而且我現在正面臨一個問題。我想在GridView中顯示來自多對多關係的數據,並能夠在稍後對這些字段進行過濾。Yii2從gridview中的多個關係中獲取數據並應用篩選器
我讀過的官方文檔here,一些計算器後like this和其他資源,但似乎無法得到它的工作。我有3個表:ACTIVIDAD,plan_actividad和circulo_icare,ACTIVIDAD有關plan_actividad和circulo_icare也涉及到它(plan_actividad是結表)。所以,我在我的ACTIVIDAD定義如下關係型號:
class Actividad extends \yii\db\ActiveRecord
{
....
public function getPlanActividad()
{
return $this->hasMany(PlanActividad::classname(), ['act_id' => 'act_id']);
}
public function getCirculo()
{
return $this->hasMany(CirculoIcare::classname(), ['cirica_id' => 'act_id'])->via('planActividad');
}
...
}
的在我看來的index.php我試圖表現出這樣的GridView控件的值:
<?= GridView::widget([
'dataProvider' => $dataProvider,
// 'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
// 'act_id',
['attribute' => 'Codigo Evento', 'value' => 'act_numorden'],
['attribute' => 'Nombre Evento', 'value' => 'act_nombre'],
['attribute' => 'Fecha Evento', 'value' => 'act_fecha'],
['attribute' => 'Locacion', 'value' => 'locacion.loc_nombre'],
[
'attribute' => 'Circulo',
'value' => 'circulo.cirica_nombre',
],
['attribute' => 'Circulo id',
'value' => 'planActividad.cirica_id',
],
// 'act_horaini',
// 'act_horafin',
// 'act_idencuesta',
// 'act_vigencia:boolean',
// 'loc_id',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
的問題是,我不能得到任何值與circulo關係表明,它總是顯示(未設置)。如果我改變的hasMany在getPlanActividad()與hasOne()話,就說明一些值(僅11 2應該的基礎上,cirica_id上plan_actividad表存在),但這些都不是正確的無論如何。我知道我可以在搜索視圖中過濾那些字段,但我不明白爲什麼這些關係不能按我的預期工作。
任何幫助將不勝感激,讓我知道如果需要更多的信息,並提前感謝您。